Materiały do zajęć VII

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

Enkapsulacja, dziedziczenie, polimorfizm

Wykład 8: klasy cz. 4

Wykład 4: Klasy i Metody

Definiowanie własnych klas

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

Dziedziczenie jednobazowe, poliformizm

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

Podstawy Programowania Obiektowego

Programowanie obiektowe - 1.

Technologie i usługi internetowe cz. 2

Język C++ Programowanie obiektowe

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

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 5: Klasy cz. 3

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

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

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

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

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

.NET Klasy, obiekty. ciąg dalszy

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Podstawy programowania. Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Programowanie obiektowe

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Dokumentacja do API Javy.

Wstęp do programowania obiektowego. Wykład 2

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

TEMAT : KLASY DZIEDZICZENIE

Definiowanie własnych klas

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.

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Zaawansowane programowanie w C++ (PCP)

Kurs WWW. Paweł Rajba.

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

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

Do czego służą klasy?

Podstawy Języka Java

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

Definicje klas i obiektów. Tomasz Borzyszkowski

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Podstawy Programowania Obiektowego

Programowanie obiektowe w języku

Język C++ zajęcia nr 2

Zaawansowane programowanie w C++ (PCP)

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

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Wprowadzenie do programowanie obiektowego w języku C++

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

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

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

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

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

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

Technologie obiektowe

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

Programowanie obiektowe

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY

Java Język programowania

OBIEKTY PHP. G. Panuś

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

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

Wstęp do Programowania 2

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Dziedziczenie. dr Jarosław Skaruz

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

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

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

Polimorfizm. dr Jarosław Skaruz

Wykład 5: Więcej o Klasach i Metodach

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

Rozdział 4 KLASY, OBIEKTY, METODY

KLASY cz.1. Dorota Pylak

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Programowanie obiektowe

Języki i techniki programowania Ćwiczenia 2

Wykład nr 5. Temat: Klasy i abstrakcja danych, cz. I. W.S. Gilbert

Transkrypt:

Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja (enkapsulacja) Dziedziczenie Polimorfizm Modyfikatory dostępu ukrywanie informacji Private - Wywołanie dostępne tylko z metod danej klasy Public - Wywołanie ogólnie dostępne Protected - niedostępna dla wszystkich innych klas (nawet w tym samym podzespole), z wyjątkiem tych, które z niej bezpośrednio dziedziczą i ją rozszerzają internal dostępność w obrębie tego samego podzespołu internal protected połączenie internal i protected przy czym zastosowana reguła zależy od kontekstu wywołania 1

Definicja klasy [modyfikatordostępu] class Nazwa class Nazwa public int a; public void Metoda() a = 10; Składowe klasy [modyfikatordostępu] nazwatypu nazwazmiennej Metody w klasie [modyfikatordostępu] typzwracany nazwametody(listaargumentow) instrukcje; Tworzenie obiektu (użycie operatora new) Nazwa n; n= new Nazwa(); //lub prościej Nazwa n1 = new Nazwa(); n.a =7; //zmiana wartości publicznej składowej klasy Console.WriteLine(n.a); //odczytanie wartości publicznej składowej klasy n.metoda(); // wywołanie publicznej metody Słowo kluczowe this this.a; //odwołanie się do składowej klasy wykorzystywane wewnątrz metod a; // jw. Pod warunkiem, że nie została zdefiniowana zmienna lokalna o takiej samej nazwie, wówczas dotyczy zmiennej lokalnej public void Metoda(int a) a=5; // odwołanie do zmiennej lokalnej z listy argumentów metody this.a =6; // odwołanie do składowej klasy Console.WriteLine ( a = 0, this.a = 1,a,this.a); Ukrywanie informacji przykład class Nazwa public int a; private int b; public void metoda(nazwa n) a = 1; //OK, odwołanie do "swojego" pola publicznego b = 5; //OK, odwoałanie do "swojego" pola prywatnego metoda(); //OK, wywołanie "swojej" prywatnej metody n.a = 10; //OK, odwołanie do publicznego pola "własnej" klasy n.b = 50; //OK, odwołanie do prywatnego pola "własnej" klasy n.metoda2(); //OK, wywołanie prywatnej metody "własnej" klasy // 2

private void metoda2() Console.WriteLine( Metoda 2 z klasy nazwa ); class Klasa private double c; public void metoda(nazwa n) n.a = 11; //OK, odwołanie do pola publicznego innej klasy n.metoda(); //OK, wywołanie metody publicznej innej klasy n.b = 55; //błąd kompilacji, odwołanie do pola prywatnego innej klasy n. metoda2(); //błąd kompilacji, wywołanie metody prywatnej innej klasy c= 12.3; //OK, odwołanie do "swojego" pola publicznego Nowe podejście do programu komputerowego: Program komputerowy przestajemy definiować jako ciąg kolejnych instrukcji do wykonania, ale jako zbiór obiektów między, którymi istnieją zdefiniowane zależności. Obiekty te przekazują sobie wzajemnie informacje w postaci komunikatów czy zdarzeń za pomocą, których oddziaływają na siebie wzajemnie. Klasy częściowe //Nazwa.cs //częściowa definicja klasy //Nazwa1.cs //częściowa definicja klasy Metody częściowe //Nazwa.cs public void metoda() int a; metoda1(a++);. partial void metoda1(int a); //Nazwa1.cs partial void metoda1(int a) Właściwości metod częściowych muszą być definiowane w klasach częściowych (partial) typem przekazywanym (zwracanym) musi być void nie mogą posiadać modyfikatora dostępu (jak również innych modyfikatorów, takich jak virtual, sealed czy new) domyślnie prywatne mogą być metodami statycznymi lub obiektu można przekazywać do nich parametry poza przesyłaniem argumentu jako parametr wyjściowy out nie musi być części implementacyjnej 3

Modelowanie klas class NazwaKlasy public int Pole1; private double pole2; public int Metoda1(string arg1) private void metoda2() +Pole1 : int - Pole2 : double Nazwa klasy + Metoda1( in arg1 : sting) : int - metoda2() : void Konstruktor Definicja konstruktora Metoda klasy Metoda wywoływana zaraz po utworzeniu obiektu Nazwa konstruktora jest taka sama jak nazwa klasy w której jest zdefiniowany Brak typu zwracanego przez metodę Wywoływany przy użyciu operatora new Można go przeciążyć Można określić modyfikator dostępu Przykład konstruktora class NazwaKlasy public NazwaKlasy() //konstruktor bezargumentowy public NazwaKlasy(int arg1,double arg2) //konstruktor z argumentami Konstruktor bezargumentowy Generowany automatycznie przez kompilator, jeżeli nie ma innego konstruktora W przeciwieństwie do struktur w klasie jeśli zdefiniowano konstruktor z większą niż zero liczba argumentów, brak jest konstruktora domyślnego Inne nazwy dostępne w literaturze domyślny domniemany Przykład użycia NazwaKlasy n1 = new NazwaKlasy(); NazwaKlasy n1 = new NazwaKlasy(1, 2.3); 4

Możliwości wywoływania konstruktorów w celu zdefiniowania działania innych konstruktorów Lista inicjalizacyjna konstruktora Uwaga na wywołania rekurencyjnie (stanowią błąd) Wywoływany przez operator Wywoływany przez operator new Można go przeciążyć class NazwaKlasy private Typ1 pole1; private Typ2 pole2; private Typ3 pole3 public NazwaKlasy(): this(war1) public NazwaKlasy(Typ1 arg1):this(arg1, war2) public NazwaKlasy(Typ1 arg1, Typ2 arg2) :this(arg1, arg2, war3) public NazwaKlasy(Typ1 arg1, Typ2 arg2, Typ3 arg3) pole1 = arg1; pole2 = arg2; pole = arg3; Inicjalizacja obiektów class K1 public int A; public int B; class K2 public int X; public int Y; public K1 K; K2 a = new K2 X=1, K = new K1A =10, B=20 ; K1 k = new K1()A =20, B=30; Własności inicjalizatorów: Nie wszystkie pola muszą być inicjalizowane w inicjalizatorze Wcześniej jest wywoływany konstruktor domyślny, chyba że wskażemy inny Inicjalizatory mogą być zagnieżdżone Można inicjalizować klasy i struktury Kolejność inicjalizacji Pola są inicjalizowane wartością zero dla danego typu Nadawane są wartości przypisane w miejscu definicji private int nazwapola = 1; Wartość przypisana w konstruktorze. Wartości przypisane w konstruktorze wywołanym na liście inicjalizacyjnej są nadpisywane Wartości przypisane przy pomocy inicjalizatora obiektów Destruktor W programowaniu obiektowym metoda wywoływana tuż przed zwolnieniem pamięci przez obiekt Definicja destruktora ~NazwaKlasy() Metoda Finalize Interfejs IDisposable jest niedeterministyczny, wywoływany przez GarbageColector przed zwolnieniem pamięci zajmowanej przez obiekt W c# możemy unikać tworzenia destruktora 5

Struktury różnice w stosunku do klas Typ wartości Typ referencyjny Nie można deklarować konstruktora domyślnego - można Wszystkie pola muszą być zainicjalizowane w konstruktorze konstruktor może definiować dowolną liczbę pól Konstruktor domyślny jest zawsze generowany w klasie jest generowany do puki nie utworzymy dowolnego innego konstruktora Nie można nadawać polu wartości w miejscu definicji domyślne wartości w klasie można nadawać składowym w miejscu definicji Właściwości i indeksatory Wstęp Pełna enkapsulacja dostęp do pól składowych Indeksator klasa z polem składowym będącym kolekcją, dostęp do elementu kolekcji przy pomocy indeksu Właściwość Definiuje wirtualny atrybut get - właściwość do odczytu set - właściwość do zapisu element o nazwie value [modyfikator dostępu] typ Nazwa get set Właściowści przykład class Student private int numerindeksu; public int NumerIndeksu //definicja właściwości get return numerindeksu; set numerindeksu = value; Student s = new Student(); s.numerindeksu = 1234; int nr = s.numerindeksu; Console.WriteLine(s.NumerIndeksu); Definicja set i get może być utworzona jako: virtualne abstrakcyjne (czysto virtualne) metody statyczne public int wlasnosc private set wlasnosc = value; get return wlasnosc; 6

Własności automatyczne Cechy własności class Osoba public int NumerIndeksu set; get; class Student private int numerindeksu; public int NumerIndeksu //definicja właściwości get return numerindeksu; set numerindeksu = value; Zapewniają dostęp do składowych zarówno odczyt jak i zapis przy wykorzystaniu spójnej konwencji Można ograniczać dostęp dowolnie, albo względem odczytu albo względem ustawienia wartości Tworząc własność tworzymy jakby atrybut klasy, ale w rzeczywistości wywoływane są pewne funkcje Indeksatory definicja [modyfikator_dostepu] typ this[typ1, typ2 ] get set Składowe const i readonly Pole readonly można jej nadać wartość tylko w konstruktorze i w miejscu definicji każdy obiekt może mieć inną wartość tego pola Pola const Wartość musimy być przypisana w miejscu definicji 7