Programowanie obiektowe Andrzej Ziółkowski Wykład 2
Algorytm Algorytm – (przepis), ścisły opis sposobu wykonania) skończony, uporządkowany zbiór jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Schemat blokowy – jeden ze sposobów przedstawiania algorytmu Program – inny sposób przedstawiania algorytmu. Algorytm zapisujemy w języku programowania (np. Java) o ściśle określonej syntaktyce (składni) i semantyce (znaczeniu wyrażeń)
Dane i struktury danych Typy proste Tablica Stos Kolejka Lista Drzewo Struktura Tablica asocjacyjna
Typy proste Znakowe Character String StringBuffer Liczbowe Byte Short Integer Long Float Double BigDecimal BigInteger Logiczne Boolean
Tablica Dostęp do jednorodnych, powtarzających się danych przez podanie indeksu np. produkcja_netto[2] – może oznaczać wartość produkcji w lutym
Stos Stos – można pobrać tylko element ostatnio zapamiętany Funkcje: push – zapamiętanie na stosie pop – pobranie ze stosu Zastosowanie: Implementacja wyrażeń arytmetycznych Przekazywanie parametrów funkcji
Kolejka Można pobrać element najwcześniej zapamiętany
Lista Uporządkowany zbiór elementów. Każdy element wskazuje następny a w liście dwukierunkowej również poprzedni
Drzewo (hierarchia) Relacje typu rodzice – dzieci Drzewo binarne
Struktura Struktura – zbiór powiązanych ze sobą logicznie danych Przykład (język C) Deklaracja struct pracownik { char nazwisko[30]; char stanowisko[20]; int wynagrodzenie; char* CV; } Odwołanie pracownik.wynagrodzenie = 4500;
Funkcja (procedura, podprogram) Wydzielona część programu realizująca powtarzający się fragment algorytmu Zwiększenie czytelności i skrócenie kodu Przykład Deklaracja: float odległość(float x1, float y1, float x2, float y2) { return math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } Wywołanie: float odl1 = odległość(245.67, 567.41, 247.59, 588.09); float odl2 = odległość(p1.x, p1.y, p2.x, p2.y);
Przekazywanie parametrów przez wartość – funkcja nie może zmienić wartości parametru przez wskaźnik – funkcja może zmienić wartość parametru
Pojęcie klasy i obiektu Klasa to zbiór obiektów opisywanych tym samym zestawem parametrów (pól, atrybutów) oraz zestawem procedur działania (metod, funkcji). Obiekt należący do klasy opisuje struktura, której elementami są pola oraz metody. Wartości pól określają stan obiektu i jego cechy. Metody określają sposób działania obiektu (algorytmy). Mogą zmieniać wartości pól a tym samym stan obiektu. Obiekty są tworzone i po utworzeniu mogą być używane. Podczas tworzenia obiektu rezerwowane jest miejsce w pamięci potrzebne do przechowywania struktury opisującej obiekt. Tworzonym obiektom nadajemy nazwy pozwalające się do nich odwoływać. Możemy wywołać metodę konkretnego obiektu podając jego nazwę oraz nazwę metody.
Przykład klasy Meble Meble biurowe Fotele Półki Biurka Meble do sypialni Łóżka Szafy Meble kuchenne Podział na klasy jest arbitralny i zależy od naszych potrzeb Obiekt: Fotel „President” jest obiektem należącym do klasy Fotele, Meble biurowe, Meble Klasy mogą tworzyć hierarchię Stan obiektu określa zestaw parametrów (atrybutów, pól), różny dla różnych klas np. fotel Rodzaj obicia Model Cena …
Klasa „Fotel” - deklaracja class Fotel { String nazwa; String typ; String obicieKolor; String obicieKodMateriału; float cena; … Fotel(String nazwa, String typ) {…} Obicie(String kolor, String materiał) {…} ObliczCenę() {…} MalujFotel() {…} }
Klasa „Fotel” - użytkowanie Tworzenie obiektu „Fotel” Fotel fot1 = new Fotel(”President”,”N-45-S3”); Fotel fot2 = new Fotel(”President”,”N-45-S3”); Specyfikacja fot1.Obicie(”JasnaZieleń”,”M33-221”); fot2.Obicie(”WściekłyFiolet”,”M33-221”); Obliczanie ceny float cena1 = fot1.ObliczCenę(); float cena2 = fot2.ObliczCenę();
Dziedziczenie (inheritance) Dziedziczenie - tworzenie nowej klasy na bazie klasy już istniejącej p1, p2, p3, p4 – pola, m1, m2, m3 -metody
Hermetyzacja (enkapsulacja) Zmiana stanu obiektu (wartości pól) tylko za pośrednictwem metod tego obiektu. Wszystko co dotyczy obiektów należących do pewnej klasy powinno być realizowane za pomocą metod tej klasy a nie poza nią. Korzyści: Gdy coś źle działa dla pewnej klasy obiektów nie musimy szukać błędów w całym programie a jedynie w klasie obiektu
Polimorfizm Możliwość innego definiowania metod dziedziczonych z klas bazowych. Ta sama metoda należąca do klasy bazowej może być inaczej zrealizowana i inaczej działać w obiektach należących do różnych klas wywiedzionych z tej samej klasu bazowej.
Przykład
Przykład - klasy Symulacja – kontroluje i organizuje przebieg symulacji, w szczególności proces pojawiania się nowych klientów w sposób zgodny z zebranymi danymi statystycznymi Klient – zawiera wszystkie informacje o kliencie i sprawie, którą chce załatwić Urzędnik – zawiera wszystkie informacje o urzędniku i jego kompetencjach
Przykład class Klient { int stan; // oczekiwanie, załatwianie,… String typSprawy; int maxCzasCzekania; int czasCzekania; StańWKolejce(int nrOkienka); ZałatwiajSprawę(); Zrezygnuj(); ObliczCzasCzekania(); }
Język Java - zmienne Deklarowanie zmiennych Deklarowanie tablicy int x = 0; // x-nazwa zmiennej, 0-wartość String s = ”abc”; // s-nazwa zmiennej, ”abc”-wartość Deklarowanie tablicy int[ ] t = new int[10]; // t-nazwa tablicy, int-typ elementu, 10-liczba elementów tablicy Zmiana wartości zmiennej i elementu tablicy x = 55; // x-nazwa zmiennej, 55-nowa watość t[0] = 44; // t-nazwa tablicy, 0-nr elementu, 44-nowa wartość
Język Java - operatory Podstawienia Arytmetyczne Logiczne Bitowe = += -= Arytmetyczne + - * / % Logiczne && || Bitowe & | ~ ^ << >> >>> Relacje == != > >= < <=
Język Java – instrukcje sterujące Instrukcje warunkowe if (n<10) { x = n; … } else { x = 0; } Pętle do { } while (i > 0); for (int i=0; i<10; i++) { ...