Podstawy programowania obiektowego



Podobne dokumenty
Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie obiektowe i zdarzeniowe

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

Programowanie obiektowe i zdarzeniowe

Enkapsulacja, dziedziczenie, polimorfizm

Materiały do zajęć VII

Języki i metody programowania Java. Wykład 2 (część 2)

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

Programowanie komputerowe. Zajęcia 7

PARADYGMATY PROGRAMOWANIA Wykład 3

Wstęp do Programowania 2

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

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

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Wykład 4: Klasy i Metody

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Projektowanie klas c.d. Projektowanie klas przykład

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

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

Przypomnienie o klasach i obiektach

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

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

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.

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

Aplikacje w środowisku Java

Technologie i usługi internetowe cz. 2

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

Programowanie obiektowe

Builder (budowniczy) Cel: Przykład:

Programowanie, część I

Definiowanie własnych klas

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

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

Dokumentacja do API Javy.

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

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

Wykład 5: Klasy cz. 3

Programowanie obiektowe w C++ Wykład 12

TEMAT : KLASY POLIMORFIZM

Programowanie, część I

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

11.6 Klasa do obsługi liczb wymiernych

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

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

Metody Metody, parametry, zwracanie wartości

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Programowanie obiektowe

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

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

Klasy cd. Struktury Interfejsy Wyjątki

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Diagramy klas. dr Jarosław Skaruz


TEMAT : KLASY DZIEDZICZENIE

Wykład 5 Okna MDI i SDI, dziedziczenie

Wstęp do programowania obiektowego. Wykład 2

Programowanie obiektowe

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

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

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

Programowanie Obiektowe i C++

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Klasy i obiekty cz II

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

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

Podstawy Programowania Obiektowego

Wykład 8: klasy cz. 4

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Programowanie obiektowe

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Aplikacje w środowisku Java

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Zadania z podstaw programowania obiektowego

Programowanie obiektowe

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

PARADYGMATY PROGRAMOWANIA Wykład 2

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Transkrypt:

Podstaw programowania obiektowego wkład 5 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak, korzstając z dotchczasowej wiedz, zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine(" (0, 1)",, ); Console.ReadKe(); A co, jeśli punktów jest więcej? A co, jeśli punkt może mieć kolor, nazwę, znacznik widoczności, etc? 1/28

2/28 namespace ConsoleApplication1 // tworzenie punktu p1 = new (); p1. = 3; p1. = 2; Rozwiązanie: stworzenie klas reprezentującej punkt. Tworzenie obiektu klas. // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class Definicja klas.

3/28 namespace ConsoleApplication1 // tworzenie punktu p1 = new (); p1. = 3; p1. = 2; // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class p1 Ta instrukcja powołuje do żcia obiekt strukturę zawierającą dwie wartości tpu int (zgodnie z definicją).

4/28 namespace ConsoleApplication1 // tworzenie punktu p1 = new (); p1. = 3; p1. = 2; p1 Kropka pozwala odwołać się do składników (składowch) obiektu. 3 2 // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class (3, 2)

// tworzenie punktów p1 = new (); p2 = new (); p1. = 3; p1. = 2; p2. = 5; p2. = 1; Na podstawie tej samej definicji klas możem stworzć wiele obiektów. p1 p2 3 2 5 1 // wpisanie informacji Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); Console.ReadKe(); class (3, 2) (5, 1) 5/28

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; p1 += d; p1 = new (); p1. = 3; p1. = 2; 3 2 Klasa to nie tlko struktura. Klas mogą mieć metod. p1 4 2 (3, 2) Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); (4, 2) 6/28

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; p1 = new (); p1. = 3; p1. = 2; p1 Jak to działa? 3 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); 7/28

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) d 1 d 0 += d; += d; p1 = new (); p1. = 3; p1. = 2; this Jak to działa? 3 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); 8/28

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; Można też zapisać: this. += d; this. += d; p1 = new (); p1. = 3; p1. = 2; d 1 d 0 this Jak to działa? 4 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); 9/28

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; p1 = new (); p1. = 3; p1. = 2; p1 Jak to działa? 4 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); 10/28

class public void Przesuń(int d, int d)... public () Console.WriteLine("to jest konstruktor"); p1 = new (); p2 = new (); p1. = 3; p1. = 2; p2. = 5; p2. = 1; p1 Specjalnm tpem metod jest konstruktor. 3 2 p2 to jest konstruktor 5 1 to jest konstruktor Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); 11/28

12/28 class public void Przesuń(int d, int d)... inicjalizacja zmiennch. public (int, int ) this. = ; this. = ; p1 = new (3, 2); p2 = new (5, 1); Przeważnie zadaniem konstruktora jest Można też zapisać w mniej niejednoznaczn sposób: public (int, int ) = ; = ; p1 3 2 p2 5 1 Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.);

13/28 class public void Przesuń(int d, int d)... inicjalizacja zmiennch. public (int, int ) this. = ; this. = ; 3 2 p1 = new (3, 2); p2 = new (5, 1); this Przeważnie zadaniem konstruktora jest Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.);

14/28 class Ciekawostka: konstruktor domśln.... main... p = new (); class public (int, int ) this. = ; this. = ; Dlaczego przestało to działać?... main... p = new ();

15/28 class Specjalna metoda: ToString(). public void Przesuń(int d, int d)... public (int, int )... public override string ToString() return "jak to działa?"; jak to działa? p1 = new (3, 2); Console.WriteLine(" 0", p1); Można to też zapisać: Console.WriteLine(" 0", p1.tostring());

16/28 class public void Przesuń(int d, int d) reprezentacji... obiektu. public (int, int )... public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); Console.WriteLine(" 0", p1); Zadaniem metod ToString() jest zwrócenie tekstowej (3, 2)

17/28 class private int, ; public void Przesuń(int d, int d) += d; += d; public (int, int ) = ; = ; public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); p1.przesuń(1, 0); Console.WriteLine(p1); Pojęcie hermetzacji. To, co jest istotne dla użtkownika klas, nosi nazwę interfejsu. Jest to funkcjonalność, z jakiej można skorzstać. Powinien bć publiczn i nie powinien się zbt często zmieniać.

18/28 class private int, ; public void Przesuń(int d, int d) += d; += d; public (int, int ) = ; = ; public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); p1.przesuń(1, 0); Console.WriteLine(p1); Pojęcie hermetzacji. Implementacja nie jest ważna dla użtkownika klas. Jest prwatną sprawą twórc klas i może zmieniać się bez ostrzeżenia. To ona sprawia, że interfejs działa.

19/28 Przkład: Klasa Konto. Konto konto = new Konto(); konto.wpłać(1000); konto.wpłać(250); Console.WriteLine(konto.Saldo()); Console.WriteLine(konto); class Konto... public void Wpłać(double kwota)... public void Wpłać(double kwota)... public double Saldo()... public override string ToString()...

Przkład: Klasa Konto. Konto konto = new Konto(); konto.wpłać(1000); konto.wpłać(250); Console.WriteLine(konto.Saldo()); Console.WriteLine(konto); class Konto private double suma; public void Wpłać(double kwota) suma += kwota; public void Wpłać(double kwota) suma -= kwota; public double Saldo() return suma; public override string ToString() return suma.tostring("f2"); 20/28

21/28 class Konto Przkład: Klasa Konto. private double suma; public void Wpłać(double kwota) suma += kwota; public void Wpłać(double kwota) if (kwota <= 0 kwota > suma) Console.WriteLine("Nie możesz wpłacić."); return; suma -= kwota; public double Saldo() return suma; public override string ToString() return suma.tostring("f2"); Jaką to: Konto.Wpłać(250); ma przewagę nad tm? Konto.suma -= 250;

Zespolona z1 = new Zespolona(), z2 = new Zespolona(2, 1), z3 = new Zespolona(3); Przkład: Klasa Zespolona. z1.dodaj(z2); z2 = z1.plus(z3); Console.WriteLine(z2); class Zespolona... public Zespolona()... public Zespolona(double r)... 5+1i public Zespolona(double r, double i)... public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z)... public override string ToString()... 22/28

23/28 class Zespolona Przkład: Klasa Zespolona. private double re, im; public Zespolona() this.re = 0; this.im = 0; Konstruktor public Zespolona(double r) this.re = r; this.im = 0; public Zespolona(double r, double i) this.re = r; this.im = i; public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z)... public override string ToString()...

24/28 class Zespolona Przkład: Klasa Zespolona. private double re, im; public Zespolona() Można tak, gdż public Zespolona(double r) składowe domślnie są zerowane. this.re = r; this.im = 0; public Zespolona(double r, double i) this.re = r; this.im = i; public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z)... public override string ToString()...

25/28 class Zespolona private double re, im; public Zespolona() public Zespolona(double r) : this(r, 0) public Zespolona(double r, double i) this.re = r; this.im = i; public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z)... public override string ToString()... Przkład: Klasa Zespolona. Zadanie pozostawione innemu konstruktorowi.

26/28 class Zespolona private double re, im; public Zespolona() public Zespolona(double r) : this(r, 0) public Zespolona(double r, double i)... public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z)... public override string ToString() if (im >= 0) return re + "+" + im + "i"; return re + "" + im + "i"; Przkład: Klasa Zespolona. Bez znaku + jeśli wartość urojona jest ujemna.

27/28 class Zespolona private double re, im; public Zespolona() public Zespolona(double r) : this(r, 0) public Zespolona(double r, double i)... public void Dodaj(Zespolona z) this.re += z.re; this.im += z.im; public Zespolona Plus(Zespolona z)... public override string ToString()... Przkład: Klasa Zespolona. Dodajem do samego siebie. this Zespolona re im z Zespolona re im

28/28 class Zespolona private double re, im; public Zespolona() public Zespolona(double r) : this(r, 0) public Zespolona(double r, double i)... public void Dodaj(Zespolona z)... public Zespolona Plus(Zespolona z) Zespolona wnik = new Zespolona(); wnik.re = this.re + z.re; wnik.im = this.im + z.im; return wnik; public override string ToString()... Przkład: Klasa Zespolona. Musim zwrócić sumę siebie i przekazanego argumentu - jakąś nową zmienną zespoloną. this Zespolona re im z Zespolona re im wnik Zespolona re im