Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Programowanie Obiektowe – Wykład 2
dr Piotr Jastrzębski Wydział Matematyki i Informatyki
2
Powtórka: klasa vs obiekt
„szablon”/ „foremka” abstrakcyjny twór przechowuje cechy, a nie wartości Obiekt konkretny egzemplarz danej klasy przechowuje konkretne wartości
3
Założenia/filary programowania obiektowego:
Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm
4
Abstrakcja - polega na ukrywaniu lub pomijaniu mało istotnych informacji a skupieniu się na wydobyciu informacji, które są niezmienne i wspólne dla pewnej grupy obiektów. Klasa
5
Hermetyzacja lub inaczej mówiąc enkapsulacja polega na ukrywaniu nieistotnych informacji na temat obiektu w celu zminimalizowania efektów jego modyfikacji oraz na oddzieleniu tego co zawiera i co może zrobić obiekt od tego jak jest zbudowany i jak to robi. Modyfikatory dostępu
6
Dziedziczenie pozwala rozszerzać możliwości klas poprzez implementacje osobnych klas rozszerzających. Dzięki dziedziczeniu możemy tworzyć nowe klasy w oparciu o już istniejące, bez potrzeby implementowania tych funkcjonalności, które zostały już zaimplementowane w klasach bazowych.
7
Polimorfizm pozwala traktować różnorodne dane w ten sam sposób, w zależności od kontekstu. W trakcie wykonywania programu automatycznie są znajdowane i interpretowane odpowiednie metody w zależności od tego jak chcemy traktować nasze dane.
8
Pierwsza klasa - Dom public class Dom { public int powierzchnia;
public bool garaz; public int iloscPokoi; public bool ogrod; public int iloscPieter; public int PodajCene() { return powierzchnia*3000; } }
9
Definicja klasy: modyfikator_dostępu class NazwaKlasy { deklaracje pól i metod }
10
Modyfikatory dostępu Umożliwiają określenie dostępu do danego elementu z zewnątrz klasy. Rodzaje: publiczne (public), chronione (protected), wewnętrzne (internal), wewnętrzne chronione (protected internal), prywatne (private).
11
Modyfikatory dostępu:
public - elementy publiczne, dostępnymi na zewnętrz klasy, private – elementy prywatne, a dostęp do nich z poza klasy, będzie niemożliwy, internal - nie będą udostępniane na zewnątrz podzespołu, protected – elementy traktowane jako chronione, będą dostępne dla danej klasy oraz na potrzeby klas dziedziczonych, nie będą natomiast widoczne na zewnątrz klasy
12
Pola Zmienne przechowywane w danej klasie. Deklaracja:
modyfikator typ_danych nazwaPola; np. public int powierzchnia;
13
Pole a zmienna W przeciwieństwie do zmiennych pole, jeżeli nie zostanie zainicjowane, po utworzeniu obiektu danej klasy automatycznie przyjmie swoją wartość domyślną, odpowiednio: dla typów liczbowych będzie to 0, dla łańcucha pusty ciąg oznaczany jako "" dla typu boolean wartość false; a dla typów referencyjnych null.
14
Możliwe modyfikatory public private internal protected
readonly – tylko do odczytu, wartość do pola oznaczonego jako readonly możemy przypisać w chwili deklaracji takiego pola lub w konstruktorze klasy. static - takie pole jest częścią stanu klasy.
15
Metody definiują zachowanie, umożliwiając im wykonywanie konkretnych zadań, nie można ich definiować poza ciałem klasy. Deklaracja: modyfikator typ zwracany przez metodę nazwa metody (NazwaMetody()) lista typów i nazw parametrów metody
16
Modyfikatory metod (poza standardowymi):
virtual override new sealed abstract static - może być wywoływana bez konieczności tworzenia obiektu extern – implementacja zewn.
17
Przykłady public int PodajCene() { return powierzchnia*3000; }
public int PoliczSume(int liczba1, int liczba2) { return liczba1 + liczba2; }
18
Przykłady public void WyswietlImie() { Console.WriteLine(imie); } void – metoda nie zwraca żadnej wartości, typ pusty
19
Przeciążanie metod Przeciążone metody to takie, które:
mają taki sam typ zwracany, mają identyczną nazwę, różnią się tylko ilością lub typami przekazywanych parametrów.
20
Przykład static string OpiszTyp() { return "Metoda bez argumentów"; } static string OpiszTyp(int x) return "Liczba całkowita"; static string OpiszTyp(string x) return "Łańcuch znaków"; static string OpiszTyp(double x, int y) return "Liczba double i liczba całkowita";
21
Tworzenie obiektów - operator new
Deklaracja typ nazwaObiektu = new NazwaKlasy() Przykład: Dom domBasi = new Dom();
22
Odwołanie się do pól klasy
nazwaObiektu.nazwaPola Przykład: domBasi.powierzchnia = 200; domBasi.garaz = true; domBasi.iloscPokoi = 7; domBasi.ogrod = false; domBasi.iloscPieter = 1;
23
Operator new/Konstruktor
Operator new automatycznie wywołuje konstruktor. Konstruktor metoda wykonywana zaraz przy tworzeniu instancji obiektu, zawiera modyfikatory dostępu i parametry, nazwa pokrywa się z nazwą klasy.
24
Przykłady Konstruktor domyślny public Dom() { }
Konstruktor domyślny z wartościami public dom() powierzchnia = 150;
25
Przykłady Konstruktor z parametrami public Dom(int powierzchnia) { this.powierzchnia = powierzchnia; } Deklaracja obiektu z parametrem Dom domBasi = new Dom(250);
26
Po co przydają się konstruktory?
Nie trzeba wywoływać dodatkowych metodą, inicjują stan klasy na początku. Lepsza czytelność i zwięzłość kodu.
27
Niszczenie obiektów Język C# automatycznie odzyskuje pamięć (nie trzeba jawnie usuwać obiektów). Czasem jednak chcemy samodzielnie zarządzać zasobami pamięci – w tym celu mamy destruktor. Deklaracja: ~NazwaKlasy { instrukcja do wykonania przy niszczeniu; }
28
Przykład ~Car() { Console.WriteLine(„Jestem niszczony”); }
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.