wprowadzenie w Świat obiektÓw
DESCRIPTION
WPROWADZENIE W ŚWIAT OBIEKTÓW. - Szymon Urban 140929 -. Programowanie obiektowe przyczyny powstania. Dostosowanie do ludzkiego stylu myślenia Uproszczenie procesu programowania poprzez wielokrotne wykorzystanie gotowych fragmentów kodu Zapotrzebowanie na języki i środowiska symulacyjne. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/1.jpg)
WPROWADZENIE W ŚWIAT OBIEKTÓW
- Szymon Urban 140929 -
![Page 2: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/2.jpg)
• Dostosowanie do ludzkiego stylu myślenia
• Uproszczenie procesu programowania poprzez wielokrotne wykorzystanie gotowych fragmentów kodu
• Zapotrzebowanie na języki i środowiska symulacyjne
Programowanie obiektoweprzyczyny powstania
OOP – ang. Object Oriented Progamming
![Page 3: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/3.jpg)
• Rozważania Arystotelesa(pojęcie formy i materii)
• Simula 67(symulacja zachowania statków, grupowanie w klasy, pierwszy język obiektowy)
• Smalltalk(dopracowanie koncepcji)
• C++
• Java
Historia
![Page 4: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/4.jpg)
• Wszystko jest obiektem(reprezentacja dowolnego pojęcia poprzez obiekt, przechowujący dane i realizujący
żądania)
• Program jest zbiorem komunikujących się obiektów(wysyłanie komunikatu – zażądanie wykonania pewnej operacji, wywołanie funkcji)
• Każdy obiekt posiada własną pamięć, na którą składają się inne obiekty
• Każdy obiekt posiada swój typ
• Wszystkie obiekty danego typu mogą otrzymywać te same komunikaty
Czyste podejście obiektowe
„Obiekt ma stan, zachowanie i tożsamość” Booch
![Page 5: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/5.jpg)
• Klasa• Obiekt• „Zdolności” i interfejs obiektu• Wymiana komunikatów pomiędzy obiektami
• Abstrakcja• Enkapsulacja (hermetyzacja, ukrywanie implementacji)
• Wielokrotne wykorzystanie implementacji• Dziedziczenie• Polimorfizm
Cechy programowania obiektowego
![Page 6: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/6.jpg)
Nazwa typu
Interfejs
Klasa i obiekt
Radiowlacz()
wylacz()
podglosnij()
scisz()
Radio rd = new Radio(); // tworzymy nowy obiekt „rd” klasy „radio”rd.wlacz(); // wysyłamy żądanie do obiektu
// obiekt wykonuje wtedy kod
![Page 7: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/7.jpg)
• Obiekt, jako iż reprezentuje pewną klasę, posiada „zdolności” i „dostarcza usług”
• Każdy z obiektów dysponuje spójnym zbiorem udostępnianych usług
(realizuje dobrze jedno zadanie, lecz nie stara się robić zbyt wiele; korzyści: łatwe odnajdywanie obiektów do wykorzystania, możliwość wykorzystania obiektów w innych programach)
• Obiekty komunikują się ze sobą(wysyłają żądania, pobierają informacje, korzystają z usług)
„Zdolności” obiektu
![Page 8: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/8.jpg)
Upraszczanie złożonej rzeczywistości przez tworzenie klas
adekwatnych do danego problemu
(np. maluch może być traktowany w zależności od potrzeby jako
maszyna, samochód lub Fiat)
Abstrakcja
![Page 9: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/9.jpg)
Enkapsulacja (hermetyzacja, ukrywanie implementacji)
• Sposób odizolowania od otoczenia wybranych danych i funkcji (operujących na tych danych) zgromadzonych w jednej strukturze
• Każdy typ obiektu prezentuje innym obiektom swój "interfejs", który określa dopuszczalne metody współpracy
(widoczne są tylko niezbędne fragmenty programu, natomiast zmienne i funkcje pomocnicze są ukryte i niedostępne z zewnątrz)
• Powody: zabezpieczenie kodu przed „popsuciem” przez niekompetentną osobę oraz umożliwienie wymiany części kodu bez wpływu na obsługę przez programistów-klientów
![Page 10: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/10.jpg)
Enkapsulacja
• Przykład: budowa monitora pozwala przeciętnemu użytkownikowi jedynie na włączanie/wyłączanie i regulowanie opcji z menu OSD.
• Mając dostęp do delikatnego i pełnego niezrozumiałych struktur wnętrza, może sobie nie poradzić, bądź coś popsuć
![Page 11: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/11.jpg)
Enkapsulacja
Specyfikatory dostępu:
• Public(definicje dostępne są dla każdego)
• Private(dostęp posiada jedynie twórca danej klasy wewnątrz jej funkcji składowych)
• Protected(klasy dziedziczące mają dostęp)
• Tryb „pakietowy”(domyślny tryb Javy, dostęp w granicach pakietu)
![Page 12: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/12.jpg)
Wielokrotne wykorzystanie implementacji
• 1) Użycie obiektu danej klasy
• 2) Umieszczenie obiektu wewnątrz nowej klasy(tworzenie obiektu składowego)
Możemy budować nowe klasy z istniejących już obiektów – kompozycja.
Np. „samochód posiada silnik”
Samochód Silnik
![Page 13: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/13.jpg)
Dziedziczenie
• Przeniesienie danych i funkcji z klasy bazowej do pochodnej.
• Klasy pochodne mogą posiadać dodatkowe metody (Trojkat) lub przesłaniać te z klasy bazowej (Okrag).
Figura
rysuj()
ustawKolor()
Okrag Trojkat
odwrocPoziomo()rysuj()
![Page 14: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/14.jpg)
Polimorfizm
• Pozwala na pisanie kodu niezależnego od konkretnego typu
• Umożliwia dodawanie nowych typów
• Kompilator nie musi wiedzieć, który dokładnie kod zostanie wykonany. Upewnia się tylko, że metoda istniej, sprawdza typy argumentów i typ zwracanej wartości.
• Jest stosowane tzw. późne (dynamiczne) wiązanie.
• Dynamiczne wiązanie jest w Javie domyślne.
![Page 15: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/15.jpg)
Polimorfizm
Metoda:void zrobCos(Figura f) {
f wymaz();f narysuj();
}komunikuje się z dowolną figurą,
jest niezależna od konkretnego typu obiektu.
Tak więc funkcja zrobCos():
Okrag o = new Okrag();Trojkat t = new Trojkat();zrobCos(o);zrobCos(t);
będzie działać poprawnie bez względu na dokładny typ obiektu.
„Jeśli jesteś figurą, to potrafisz się wymazać i narysować. Zrób to więc i zajmij się szczegółami”.
Wywołanie narysuj() dla obiektu Okrag powoduje wykonanie innego kodu niż dla trójkąta, jednak komunikat narysuj() zostaje wysłany do anonimowej Figury, wykonuje się kod poprawny dla rzeczywistego typu tej Figury.
![Page 16: WPROWADZENIE W ŚWIAT OBIEKTÓW](https://reader036.vdocuments.site/reader036/viewer/2022062801/5681430f550346895daf6236/html5/thumbnails/16.jpg)
KONIEC