WPROWADZENIE W ŚWIAT OBIEKTÓW

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Związki w UML.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Prowadzący: mgr inż. Elżbieta Majka
Zaawansowane metody programowania – Wykład V
PROGRAMOWANIE STRUKTURALNE
CORBA Łukasz Wnęk.
Programowanie obiektowe w Javie
OOP - programowanie zorientowane obiektowo w VB.NET
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
Marcin Kujawa Michał Łobarzewski
Struktury.
Dziedziczenie i jego rodzaje
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Programowanie obiektowe W1 Wprowadzenie
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II
Podstawy programowania
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Źródła: podręcznikopracował: A. Jędryczkowski.
Programowanie strukturalne i obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Marek Serek Dziedziczenie Dziedziczenie to jeden z fundamentów programowania obiektowego. Umożliwia sprawne i łatwe wykorzystywanie.
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
PWSZ Gniezno // codefly 2009
2 Odizolowanie danych od kodu może prowadzić do przypadkowych zmian danych przez funkcje, które nie są z nimi logicznie związane. Ponadto modyfikacja.
Programowanie w języku C++
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
K URS JĘZYKA C++ – WYKŁAD 6 ( ) Polimorfizm.
Programowanie obiektowe
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Wzorce Projektowe w JAVA
Platforma .Net.
Programowanie Zaawansowane
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Waldemar Bartyna Pytania egzaminacyjne 1.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
JavaBeans by Paweł Wąsala
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

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 OOP – ang. Object Oriented Progamming

Historia Rozważania Arystotelesa Simula 67 Smalltalk C++ Java (pojęcie formy i materii) Simula 67 (symulacja zachowania statków, grupowanie w klasy, pierwszy język obiektowy) Smalltalk (dopracowanie koncepcji) C++ Java

Czyste podejście obiektowe 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 „Obiekt ma stan, zachowanie i tożsamość” Booch

Cechy programowania obiektowego Klasa Obiekt „Zdolności” i interfejs obiektu Wymiana komunikatów pomiędzy obiektami Abstrakcja Enkapsulacja (hermetyzacja, ukrywanie implementacji) Wielokrotne wykorzystanie implementacji Dziedziczenie Polimorfizm

Klasa i obiekt Radio Nazwa typu Interfejs wlacz() wylacz() podglosnij() scisz() Radio rd = new Radio(); // tworzymy nowy obiekt „rd” klasy „radio” rd.wlacz(); // wysyłamy żądanie do obiektu // obiekt wykonuje wtedy kod

„Zdolności” obiektu 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)

Abstrakcja 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)

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

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ć

Enkapsulacja Specyfikatory dostępu: Public Private Protected (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)

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

Dziedziczenie Figura Przeniesienie danych i funkcji z klasy bazowej do pochodnej. Klasy pochodne mogą posiadać dodatkowe metody (Trojkat) lub przesłaniać te z klasy bazowej (Okrag). rysuj() ustawKolor() Okrag Trojkat rysuj() odwrocPoziomo()

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.

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.

KONIEC