Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Similar documents
Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Programiranje III razred

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Vežbe - XII nedelja PHP Doc

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

Računarske osnove Interneta (SI3ROI, IR4ROI)

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

PROGRAMIRANJE. Amir Hajdar

Nasleđivanje i izvedene klase u jeziku C++

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

VRIJEDNOSTI ATRIBUTA

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Java IMI PMF KG OOP 09 AKM. Objekti i klase

Projektovanje Namenskih Računarskih Struktura 1. Sistemi zasnovani na Androidu

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Uvod u relacione baze podataka

VHDLPrimeri Poglavlje5.doc

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

Uputstvo za korišćenje logrotate funkcije

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere

Izrada VI laboratorijske vježbe

Objektno orjentirano programiranje

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Lekcija 4. Java programiranje sa bazama podataka. dr Svetlana Cvetanović

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

Uputstvo za podešavanje mail klijenta

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

GUI - događaji (Events) i izuzeci. Bojan Tomić

Visoka tehnička škola Niš

Objektno Orijentisano Programiranje - C++

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Projektovanje namenskih računarskih struktura

Programiranje III razred

Višestruko nasleđivanje nije moguće u jeziku Scala

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

... ; ako je a n parno. ; ako je a n neparno

Java IMI PMF KG OOP 09 AKM. Izuzeci

Proširivanje hijerarhije klasa. Moguće je rešiti u osnovnoj klasi

Informacioni sistemi i baze podataka

1 UVOD U PROGRAMSKI JEZIK JAVA

Objektno orijentirano programiranje proširuje objektnotemeljeno mogućnošću uvoñenja odnosa izmeñu tipova i njihovih podtipova

Sberbank Business Online na Mozilla FireFox

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

modifier returnvaluetype methodname(list of parameters) { // Method body; }

Jezik Baze Podataka SQL. Jennifer Widom

Programski jezik JAVA PREDAVANJE

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

Java i Internet programiranje

Kodiranje GUI aplikacija u Visual C#

Objektno orijentisano programiranje

NIZOVI.

VDSL modem Zyxel VMG1312-B10A/B30A

TEHNIKA I INFORMATIKA U OBRAZOVANJU

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

WEB PROGRAMIRANJE PHP

Objektno orijentisano programiranje 2. Jezik C#

Programski jezici. leto

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije

Lekcija 11 Polimorfizam, Apstrakcija, Šabloni. Miljan Milošević

Osnove programskog jezika C#

RAČUNARSKI PRAKTIKUM II

Objektno orijentisano programiranje. Aleksandra Klašnja-Milićević Marko Marković

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

Marko Milošević.

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

Deo J. VBA Objects, Properties, Methods, Events,... PROJEKTOVANJE KLASNIH MODULA... Objekti Svojstva. Metode. Dogadjaji KLASE.

OBJEKTNO PROGRAMIRANJE 2

Serijalizacija u.net okruženju

Lekcija 09 Sakrivanje podataka, statički članovi, preklapanje funkcija i operatora. Miljan Milošević

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

Editovanje registra u Windowsu

JavaScript JS Cookies

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

16. Sigurnije programiranje

32-Bit-Digital Signal Controller TMS320F2833x. Texas Instruments Incorporated

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

12. Uskladištene procedure (Stored Procedures)

Decorator Adapter Chain of Responsibility Facade Proxy

Prva recenica. Druga recenica.

Visoka tehnička škola Niš

Aspektno programiranje u Javi. AOP + AspectJ

KREDITI ZA POLJOPRIVREDNIKE

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java)

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Transcription:

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Nasledjivanje klasa

Modifikator new

class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F() { Console.WriteLine("I am B"); } } class C : B { public new virtual void F() { Console.WriteLine("I am C"); } } class D : C { public override void F() { Console.WriteLine("I am D"); } }

A a1 = new A(); a1.f(); // I am A A b1 = new B(); b1.f(); //I am B B b2 = new B(); b2.f(); // I am B A c1 = new C(); c1.f(); // I am B B c2 = new C(); c2.f(); // I am B C c3 = new C(); c3.f(); // I am C A d1 = new D(); d1.f(); // I am B B d2 = new D(); d2.f(); // I am B C d3 = new D(); d3.f(); // I am D D d4 = new D(); d4.f(); // I am D

Nešto više i o konstruktorima u C#

Podrazumevani konstruktor

Podrazumevani konstruktor kod struktura

Statički konstruktor Novini kod C# su statički besparametarski konstruktori: class MyClass { } Static MyClass() { } // kod za inicijalizaciju

IZVRŠAVA SE SAMO JEDANPUT za razliku od drugih konstrukotra koji se izvršavaju prilikom svakog pravljenja objekata iz date klase. Korisni su za inicijalizaciju statičkih promenljivih. U C++ ne postoji ništa analogno ovom.

Vreme izvršavanja i redosled se ne garantuje, osim, naravno, da će biti pozvan pre instanciranja bilo kog objekta te klase! Modifikatori pristupa su besmisleni u slučaju ovih konstruktora jer ih poziva.net runtime okruženje. Zato nemaju parametre i može postojati samo jedan ovakav konstruktor klase

Pozivanje konstruktora iz konstruktora class Vozilo { private string opis; private uint brojtockova; } public Car(string _opis, uint _brojtockova) { opis = _opis; brojtockova = _brojtockova; } public Car(string _opis) : this( _opis, 4 ) { // dodatna inicijalizacija }

Konstruktori u kontekstu hijerarhije klasa U postupku pravljenja instance izvedene klase, angažovani su ne samo konstruktori te klase već i klasa koje su nasleđene čak i kada se to ne naglasi: public myclass() { Name = no name ; } je identično sa: public myclass() : base () { Name = no name ; }

Primer sa parametrima: public myclass(string name) : base (name) { // ostatak inicijalizacije specifican za // myclass }

Provera tipova podataka i operator is

Primer upotrebe operatora is class Class1{} class Class2{} class IsTest{ static void Test(object o) { Class1 a; Class2 b; if (o is Class1) { Console.WriteLine("o is Class1"); a = (Class1)o; // Do something with "a." } else if (o is Class2){ Console.WriteLine("o is Class2"); b = (Class2)o; // Do something with "b." } else{ Console.WriteLine("o is n Cl1 nor Cl2."); } } static void Main() { Class1 c1 = new Class1(); Class2 c2 = new Class2(); Test(c1); Test(c2); Test("a string"); } }

Provere konverzije tipova i operator as

Operator as as operator je kao operator konverzije tipova (cast) osim što daje vrednost null ako konverzija nije moguća umesto da izbacuje izuzetak. Jos jedan primer:

Primer upotrebe operator as

Object Koren svih klasa u.net Elementi ove klase: Konstruktor: public Object () Ovaj konstruktor se poziva iz konstruktora izvedenih klasa, ali takođe može biti pozivan direktno pri kreiranju neke instance ove klase.

Metode klase Object Object.Equals (Object) Object.Equals (Object, Object) Određuje da li je tekući objekat jednak sa objektom koji je argumenat metode.

ToString klase Object public virtual string ToString () Vraća String koji predstavlja tekući objekat Object.

foreach

Polja, konstante i readonly

Statička polja i konstante

Statičke metode

Destruktori u C# Postoje ali se ređe koriste nego u C++, a i način funkcionisanja je nešto drugačiji. Oslobađanje zauzetih resursa se obavlja implementacijom metode Dispose interfejsa IDisposable Ovim metodom se zatvaraju ili oslobađaju neupravljivi(unmanaged) resursi kao na primer fajlovi, tokovi (streams), and handles held by an instance of the class that implements this interface. Ovaj metod, po dogovoru, se koristi za sve zadatke oslobađanja resursa. Metod Despose se poziva kada objekat više nije potreban.

Zašto je implementacija kroz interfejs? Na taj način se garantuje propagacija oslobađanja kroz hijerarhiju svih klasa. PRIMER: A sadrži objekat B, i objekat B sadrži neki objekat C, onda A-Dispose mora da pozove B-Dispose koji zatim poziva C-Dispose. Objeat mora pozvati Dispose metod bazne klase ako je u baznoj klasi implementiran IDisposable.

Šta sa starim destruktorom Moguće ga je eksplicitno implementirati i on se može koristiti samo pri oslobađanju nekih nekontolisanih resursa.

Primer: public class MyClass : IDisposable { public void Dispose() // implementacija metode iz interfejsa IDisposable { Dispose(true); // preopterecivanje metoda Dispose GC.SuppressFinalize(this); } private void Dispose( bool disposing) { If(disposing) { // ciscenje koda } } ~MyClass() { Dispose(false); } }

hardsoft@vets.edu.yu

Nema više......za danas.

ArrayList Nizovne liste

Kolekcije

Interfejsi