Wprowadzenie do Programowania Obiektowego
Transkrypt
Wprowadzenie do Programowania Obiektowego
2016-03-04 Języki Programowania II Wykład 1 Wprowadzenie do Programowania Obiektowego Wprowadzenie • Organizacja przedmiotu 7 wykładów 4 listy ćwiczeniowe • Zasady zaliczenia Projekt programistyczny • Pytania Plan wykładu • • • • • Programowanie Obiektowe Klasy vs Obiekty Powiazania Atrybuty Modelowanie klas w UML (Class diagram) 1 2016-03-04 Co zrobić żeby duży projekt się powiódł? • Specjaliści, dobre standardy, doświadczenie • Nie wystarczy wiedzieć jak zrobić wszystkie część i jak je złożyć razem – Czy da się je połączyć? – Czy będą współpracować? – Jak radzić sobie ze zmianami? • Metoda…? Programowanie obiektowe • Najpopularniejsza technika tworzenia programów • Program = zbiór obiektów • Obiekty łączą stan i zachowanie • Obiekty zlecają sobie nawzajem pewne odpowiedzialności • Łatwiej tworzyć duże programy Historia • Pierwszy język obiektowy Simula 67 – Ole-Johan Dahl i Kristen Nygaard z Norsk Regnesentral w Oslo – Symulacja świata rzeczywistego • Alan Kay z Xerox's Palo Alto stworzył Smalltalk – Wiele rewolucyjnych pomysłów, np. dziedziczenie – Popularny i poniekąd stosowany w praktyce • Lata dziewięćdziesiąte i C++ • Java – Oak, Web Applety 2 2016-03-04 Czemu programowanie obiektowe • Zmniejszenie luki reprezentacji – Łatwiej współpracować nad czyimś kodem • Zrób co należy i zrób to jak należy • Analiza obiektowa – badanie problemu a nie rozwiązania – Klasy dziedzinowe a nie programowe – Obiekty pojęciowe a nie programowe • Projektowanie obiektowe – Wyznaczanie odpowiedzialności obiektom – Wzorce projektowe Proces wytwórczy • Podejście kaskadowe vs podejście iteracyjne – – – – Opracowywanie nowego produktu Nie zabieramy się za wszystko od razu Krótkie iteracje Zaczynamy od tego co najważniejsze, najtrudniejsze, najbardziej ryzykowne – Początkowe iteracje wyglądają inaczej niż końcowe Obiektowe modelowanie dziedziny • Klasy pojęciowe – Klasy a obiekty • Powiązania między klasami pojęciowymi – Kierunek czytania – Znaczące nazwy • Atrybuty klas pojęciowych – Atrybuty vs powiązania • Inspiracja modelem dziedziny pozwala zmniejszyć lukę reprezentacji 3 2016-03-04 Formułowanie klas pojęciowych • Metoda kartografa: – Używać istniejących nazw np. uczniowie vs studenci – Nie pokazywać rzeczy nieistotnych (dla danej iteracji) – Nie dodawać rzeczy których nie ma • Analiza fraz rzeczownikowych • Nie modeluj obiektów programowych Modelowanie powiązań • Za dużo powiązań = nieczytelne • Tylko to co trzeba pamiętać o zależnościach między klasami – Nie pokazujemy zasad • Nazwy powinny przenosić informacje • Liczebność – 1 (dokładnie jeden) – 11 (dokładnie jedenaście) – 3, 5, 7 (trzy lub pięć lub siedem) – 2..8 (od dwóch do ośmiu) – 0..1 (zero lub jeden) – 1..* (co najmniej jeden) – * (dowolna ilość również zero) Przykład • W parach zaprojektuj aplikacje do gry w Monopol 1) Analiza obiektów/ aktorów w grze Np. Gracz, pionek 2) Analiza powiązań pomiędzy obiektami Np. Gracz posiada pionek 3) Liczebność powiazań Np. Gracz posiada jeden pionek 4 2016-03-04 Model Gra w Monopol Dodawanie atrybutów • Wartości atrybuty opisują egzemplarze klas pojęciowych Np. nazwa, kolor, wzrost, itd. • Pułapki – Czy numer jest atrybutem klasy Bilet??? – Niech to będą typy podstawowe (uwaga na identyfikatory itp.) Gra w Monopol z atrybutami 5 2016-03-04 Obiekty (Egzemplarze) Wiązania vs Powiązania 6