Top Banner
Uvod v C# Drugi del
72

Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Jan 23, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Uvod v C#Drugi del

Page 2: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Dedovanje

Page 3: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Sintaksa

Page 4: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Prirejanje in preverjanje tipov

Page 5: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Kaste preverjenih tipov

Page 6: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Prekrivanje metod

Page 7: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Dinamično povezovanje (poenostavljeno)

Page 8: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Skrivanje

Page 9: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Dinamično povezovanje (s skrivanjem)

Page 10: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Fragile base class problem

Page 11: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Konstruktorji in dedovanje

Page 12: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Vidnost protected in internal

Page 13: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Abstraktni razredi

Page 14: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Abstraktne lastnosti in indekserji

Page 15: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Zapečateni razredi

Page 16: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Vmesniki (interfaces)

Page 17: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Sintaksa

Page 18: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Implementacija vmesnikov

Page 19: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Delo z vmesniki

Page 20: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primer

Page 21: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Delegati in dogodki

Page 22: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Delegati

Delegates are reference types which allow indirect calls to methods.

A delegate instance holds references to some number of methods, and by invoking the delegate one causes all of these methods to be called.

The usefulness of delegates lies in the fact that the functions which invoke them are blind to the underlying methods they thereby cause to run (see, for instance, the discussion of events, below).

Page 23: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Delegati

From this brief description, it can be seen that delegates are functionally rather similar to C++'s 'function pointers'.

However, it is important to bear in mind two main differences. Firstly, delegates are reference types rather than value types. Secondly, some single delegates can reference multiple methods

Page 24: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Delegate Declaration and Instantiation

Each delegate is limited to referencing methods of a particular kind only. The type is indicated by the delegate declaration - the input parameters and return type given in the delegate declaration must be shared by the methods its delegate instances reference.

To illustrate this: a delegate specified as below can be used to refer only to methods which have a single String input and no return value:

public delegate void Print (String s);

Page 25: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Suppose, for instance, that a class contains the following method:

public void realMethod (String myString) {

// method code

}

Another method in this class could then instantiate the 'Print' delegate in the following way, so that it holds a reference to 'realMethod':

Print delegateVariable = new Print(realMethod);

Page 26: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Razredi - dogodki• Jezikovna podpora dogodkom• Ključna beseda event nam omogoča določiti delegata, ki bo ustrezal

poklicanim metodam ob nastopu nekega dogodka.

public event AlarmEventHandler Alarm;

• Dogodek sprožimo s klicem dogodka

Alarm();

• Odjemalci se prijavijo na dogodek z operatorjem +=

eventSource.Alarm += new AlarmEventHandler(eventListener.AlarmRang);

Page 27: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Deklaracija delegata, prireditev metode delegatu

Page 28: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Prirejanje različnih metod

Page 29: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Creating a delegate value

Page 30: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Multicast delegati

Page 31: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Events = Special Delegate Variables

Page 32: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Izjeme (exceptions)

Page 33: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Stavek try

Page 34: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

System.Exception

Page 35: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Throwing an Exception

Page 36: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Hierarhija izjem

Page 37: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Searching for a catch Clause

Page 38: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

No Throws Clause in Method Signature

Page 39: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Namespaces and Assemblies

Page 40: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

C# Namespaces vs. Java Packages

Page 41: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Namespaces vs. Packages (continued)

Page 42: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Assemblies

Page 43: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Kako se tvorijo assemblies

Page 44: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Opcije prevajalnika

Page 45: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Opcije prevajalnika

Page 46: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primeri prevajanj

Page 47: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Atributi

Page 48: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Atributi• Atributi so deklarativni elementi jezika

– pridevniki so na primer tudi deklarativni elementi– omogočajo dekoracijo elementov kode z dodatno informacijo

• assembly, modul, tip, član tipa, return value, parameter

• Atributi posplošujejo koncept deklarativnega elementa– atributi niso omejeni na vnaprej določeno množico– lahko se zmišljujemo svoje nove atribute– atributi in njihove vrednosti so dosegljivi v času prevajanja in v času izvajanja

[Obsolete("This class is obsolete")]class A{

public void F() {}}

Page 49: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Atributi

Page 50: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Atribut s parametri

Page 51: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

AtributiNekateri vnaprej definirani atributi

Ime atributa Opis

Browsable Vključenost lastnosti v okno lastnosti

Serializable Določa naj bo razred ali struktura serializabilna

Obsolete Določa, da je nek element kode zastarel

Conditional Določa vključenost metode v odvisnosti od predproc. simbola

Page 52: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

AtributiZgled uporabe atributa Conditional

#define Debugpublic class Debug { [Conditional("Debug")] public static void Assert(bool cond, String s) { if (!cond) { throw new AssertionException(s); } } void DoSomething() { ... // If Debug is not defined, the next line is // not even called Assert((x == y), “X should equal Y”); ... }}

Page 53: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Še en primer: atribut Conditional

Page 54: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Tvoji lastni atributi

Page 55: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Niti (threads)

Page 56: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Sodelujoče niti (participating threads)

Page 57: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primer

Page 58: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Stanja niti

Page 59: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primer za Join

Page 60: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Medsebojno izobčenje (sinhronizacija)

Page 61: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Razred Monitor

Page 62: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Wait in Pulse

Page 63: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primer: sinhroniziran medpomnilnik

Page 64: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Komentarji XML

Page 65: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Posebni komentarji (podobno javadoc)

Page 66: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Primer komentirane kode

Page 67: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Tvorjena XML datoteka

Page 68: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

XML oznake (XML tags)

Page 69: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Povzetek C#

Page 70: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Odprtokodni c#MCS: The Ximian C# compilerThe Mono C# compiler is considered feature C# 1.0 complete at this point and mature. MCS is able to compile itself and many more C# programs (there is a test suite included that you can use). It is routinely used to compile Mono, roughly 1.7 million lines of C# code.

The compiler is also fairly fast. On a IBM ThinkPad t40 it compiles 18,000 lines of C# code per second.

Work on C# 2.0 has started: some pieces of it are available on the standard compiler with the -2 switch (iterators, method conversions) and some others are available on the `gmcs' branch on CVS (generics)

Obtaining MCSThe Mono C# compiler is part of the `mcs' module in the Mono CVS you can get it from our Anonymous CVS server, or you can get nightly download page.

Page 71: Uvod v C# - Prvi študentski portal | Študentski.net...Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično

Mono razhroščevalnik