Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Rozdział 4 KLASY, OBIEKTY, METODY

Wykład 4: Klasy i Metody

Kurs WWW. Paweł Rajba.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie obiektowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Wykład 8: klasy cz. 4

Programowanie obiektowe

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 5: Klasy cz. 3

Dokumentacja do API Javy.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Klasy abstrakcyjne, interfejsy i polimorfizm

Platformy Programistyczne Podstawy języka Java

Polimorfizm, metody wirtualne i klasy abstrakcyjne

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie obiektowe

Programowanie obiektowe

Dziedziczenie. Ogólna postać dziedziczenia klas:

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Dziedziczenie. dr Jarosław Skaruz

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie 2. Język C++. Wykład 3.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Polimorfizm. dr Jarosław Skaruz

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Programowanie Obiektowe i C++

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie w Internecie. Java

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

10. Programowanie obiektowe w PHP5

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Definiowanie własnych klas

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Aplikacje w środowisku Java

Technologie i usługi internetowe cz. 2

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Wprowadzenie do programowanie obiektowego w języku C++

Programowanie obiektowe

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Przypomnienie o klasach i obiektach

Mechanizm dziedziczenia

Kompozycja i dziedziczenie klas

Wstęp do Programowania 2

Dziedziczenie jednobazowe, poliformizm

PARADYGMATY PROGRAMOWANIA Wykład 4

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Java: interfejsy i klasy wewnętrzne

Enkapsulacja, dziedziczenie, polimorfizm

Materiały do zajęć VII

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Programowanie obiektowe

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Programowanie, część I

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Dziedziczenie. Tomasz Borzyszkowski

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

TEMAT : KLASY DZIEDZICZENIE

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

C# /.NET. Copyright by 3bird Projects 2018,

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Microsoft IT Academy kurs programowania

PARADYGMATY PROGRAMOWANIA Wykład 2

PHP 5 język obiektowy

Konstruktor kopiujacy

Mechanizm dziedziczenia

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Programowanie, część I

Transkrypt:

Wykład 2 28 lutego 2019

Plan wykładu 1 2 3 4 5

Plan wykładu 1 2 3 4 5

Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++;

Język C Krótka historia C 1.0 rok 2001 2002... 7.2

Implementacje.NET Framework (Microsoft) Mono (Ximian, obecnie: Novell)

Implementacje.NET Framework (Microsoft) Mono (Ximian, obecnie: Novell) ROTOR (Microsoft) DotGNU

C# czy C?

C# czy C? C# C-hash C "C krzyżyk" (cis)

Plan wykładu 1 2 3 4 5

Przykładowe zadanie Ewidencja pojazdów: co chcemy mieć w systemie: samochody osobowe, samochody ciężarowe, tramwaje; co chcemy wiedzieć: marka, rok produkcji, rejestracja; co chcemy robić: drukować informacje o danych.

Przykładowe zadanie Ewidencja pojazdów: co chcemy mieć w systemie: samochody osobowe, samochody ciężarowe, tramwaje; co chcemy wiedzieć: marka, rok produkcji, rejestracja; co chcemy robić: drukować informacje o danych.

Schemat zależności między obiektami rzeczywistymi Pojazd Samochód Tramwaj Osobowy Ciężarówka

Schemat zależności między obiektami rzeczywistymi Pojazd marka rejestracja rok_prod info() Samochód Tramwaj liczba_pasażerów Osobowy moc_silnika Ciężarówka ładowność

Implementacja w C Klasa podstawowa class Pojazd { public string marka; public string rejestracja; public string rok_prod; public void info() { Console.WriteLine("Marka: {0, rocznik: {1", marka, rok_prod);

Deklaracja podklasy A jak zamiplementować klasę Samochód class Samochod : Pojazd { bool hybryda; public void info() { base.info(); Console.WriteLine("hybryda: {0", hybryda);

Analiza przykładu Klasa Pojazd definiuje pole marka pole rejestracja pole rok_prod metodę info() Klasa Samochód dziedziczy pole marka pole rejestracja pole rok_prod Klasa Samochód dodaje pole hybryda Klasa Samochód definiuje na nowo metodę info()

Uzupełnienie 1. Dostęp do metody nadklasy public void info() { base.info(); Console.WriteLine("hybryda: {0", hybryda); To jeszcze nie jest poprawny program.

Uzupełnienie 2. Rozwiązanie konfliktu class Pojazd { public void info() {... class Samochod : Pojazd { public void info() {...

Uzupełnienie 2. Rozwiązanie konfliktu class Pojazd { virtual public void info() {... class Samochod : Pojazd { override public void info() {...

Uzupełnienie 3. W większości języków jest dostępna domyślnie klasa Object będąca nadklasą (superklasą) wszystkich innych klas.

Jak utworzyć obiekt Instrukcja new Klasa var; var = new Klasa();

Jak utworzyć obiekt Instrukcja new Klasa var; var = new Klasa(); Do utworzenia obiektu konieczna jest klasa!

Inne metody tworzenia obiektów Klonowanie obiektów Klasa varprim; varprim = var.clone(); a a Uwaga: małe oszustwo

Inne metody tworzenia obiektów Klonowanie obiektów Klasa varprim; varprim = var.clone(); a a Uwaga: małe oszustwo Fabryki obiektów Pojazd = FPM.construct("tramwaj");

Każde wywołanie metody jest związane z obiektem.

Przykłady Samochod bryczka = new Samochod(); bryczka.info();

Przykłady Samochod bryczka = new Samochod(); bryczka.info();

Przykłady Samochod bryczka = new Samochod(); bryczka.info();

Zagadka Jak wywołać w metodzie własną metodę?

Przykład class Rekurencja { public int gcd(int x, int y) { if (x == 0) return y; return???gcd(y mod x, x);

Przykład class Rekurencja { public int gcd(int x, int y) { if (x == 0) return y; return this.gcd(y mod x, x);

Zmienna this (base) Co warto wiedzieć o this: this jest zmienną obiektu wskazującą na obiekt; this można użyć tylko w metodach; this jest zawsze domyślnie zadeklarowane; nie można zmieniać wartości this.

Inne zastosowania this class Element { public Element next; public void set(element e) { this.next = e; e.next = this;

Inne zastosowania this class Element { public Element next; public void set(element e) { this.next = e; e.next = this; Element a = new Element(); Element b = new Element(); Element c; a.set(b); c = a; while (c!= null) c = c.next;

Uwagi o this zwykle nie jest konieczne używanie this return this.gcd(y mod x, x);

Uwagi o this zwykle nie jest konieczne używanie this return gcd(y mod x, x);

Uwagi o this zwykle nie jest konieczne używanie this return gcd(y mod x, x); this może być konieczne do rozstrzygnięcia niejednoznaczności int x; public void set(int x) { this.x = x;

Tablice w C Tablice to też obiekty!

Deklarowanie i inicjowanie tablic Deklaracja tablicy Pojazd[ ] parking;

Deklarowanie i inicjowanie tablic Deklaracja tablicy Pojazd[ ] parking; Inicjowanie tablicy parking = new Pojazd[2];

Deklarowanie i inicjowanie tablic Deklaracja tablicy Pojazd[ ] parking; Inicjowanie tablicy parking = new Pojazd[2]; Wszystko razem Pojazd[ ] parking = new Pojazd[100]; Uwaga: wszystkie miejsca w tablicy mają wartość null!

Przetwarzanie tablic parking[0] = new Pojazd(); parking[1] = new Samochod(); foreach(pojazd p in parking) p.info();

Plan wykładu 1 2 3 4 5

Domyślna widoczność pól i metod Jeśli nie określono inaczej, pola i metody są niewidoczne z zewnątrz.

Przykład Przykładowa klasa class Klasa { string identyfikator; void info() { Console.WriteLine("Ident: {0", this.identyfikator);

Przykład Przykładowa klasa class Klasa { string identyfikator; void info() { Console.WriteLine("Ident: {0", this.identyfikator); Dobrze Klasa obj = new Klasa()

Przykład Przykładowa klasa class Klasa { string identyfikator; void info() { Console.WriteLine("Ident: {0", this.identyfikator); Dobrze Klasa obj = new Klasa() Źle obj.identyfikator; obj.info();

Poprawka Przykładowa klasa class Klasa { string identyfikator; public void info() { Console.WriteLine("Ide: {0", this.identyfikator); Klasa obj = new Klasa()

Poprawka Przykładowa klasa class Klasa { string identyfikator; public void info() { Console.WriteLine("Ide: {0", this.identyfikator); Klasa obj = new Klasa() Źle obj.identyfikator Dobrze obj.info();

Dziedziczenie a widoczność class Klasa { string identyfikator; public void info() { Console.WriteLine("Ident: {0", this.identyfikator); Klasa obj = new Klasa() class Podklasa : Klasa { public void myinfo() { Console.WriteLine("Ident: {0", this.identyfikator);

Widoczność w podklasie class Klasa { string protected identyfikator; public void info() { Console.WriteLine("Ident: {0", this.identyfikator);

Podsumowanie Poziomy dostępu do metod i pól private (domyślny) tylko metody zdefiniowane w tej samej klasie; protected widoczność w podklasie public wszędzie.

Plan wykładu 1 2 3 4 5

Stan początkowy obiektu Ustalanie początkowych wartości zmiennych wartości domyślne ustalone w standardzie języka; przypisanie wartości w momencie utworzenia zmiennej; implementacja konstruktora.

Wartości domyślne zmiennych bool false; string ""; zmienna typu klasa null

Wartości domyślne zmiennych Uwaga bool false; string ""; zmienna typu klasa null Można też przypisywać domyślne wartości funkcją default: typ zmienna = default(typ);

Przypisanie wartości w miejscu deklaracji int x = 12; Element e = new Element();

Konstruktor Cechy konstruktora konstruktor to metoda, ale specjalna; jest to metoda wywoływana natychmiast po utworzeniu obiektu; konstruktor ma nazwę taką jak nazwa klasy; konstruktorów nie można jawnie wywoływać (prawie ;-); konstruktorów może być kilka.

Deklaracja konstruktora class Pojazd { string marka; int rok_prod; public Pojazd() { this.marka = "Syrena"; this.rok_prod = 1955; public Pojazd(string marka) { this.marka = marka;

Deklaracja konstruktora class Pojazd { string marka; int rok_prod; public Pojazd() { this.marka = "Syrena"; this.rok_prod = 1955; public Pojazd(string marka) { this.marka = marka; Użycie konstruktora Pojazd p = new Pojazd(); Pojazd w = new Pojazd("wehikuł czasu");

i dziedziczenie class Pojazd { string marka = ""; public Pojazd(string marka) { this.marka = marka; public Pojazd() { this.marka = "syrena"; class Samochod : Pojazd { boolean gaz; public Samochod(string marka, boolean gaz): base(marka) { this.gaz = gaz; public Samochod() { /* Automatyczne wywołanie konstruktora klasy Pojazd */

Destruktor Destruktor (finalizator) to bezparametrowa metoda wywoływana przy usuwaniu obiektu z pamięci. Przykład class Klasa { Klasa() {...

Destruktor Destruktor (finalizator) to bezparametrowa metoda wywoływana przy usuwaniu obiektu z pamięci. Przykład class Klasa { Klasa() {... Uwaga Nie wiadomo, kiedy obiekt będzie usunięty z pamięci, być może dopiero po zakończeniu programu.

Plan wykładu 1 2 3 4 5

Początek programu Początkiem programu jest publiczna statyczna metoda Main Przykład class MojProgram { public static void Main() {...

Rozszerzenia plików Domyślnym rozszerzeniem pliku jest *.cs

Przykład programu plik.cs using System; class Pojazd {... class Samochod : Pojazd {... class MojProgram { public static void Main() { Console.WriteLine("Hello world");

Kompilacja i wykonanie Środowiska zintegrowane MS Windows: Visual Studio Linux: MonoDevelop Linux, środowisko Mono $ mcs plik.cs a $ mono plik.exe a W starszych wersjach: gmcs, smcs, dmcs MS Windows C:\Moje Dokumenty> csc plik.cs C:\Moje Dokumenty> plik.exe