Programowanie obiektowe Andrzej Zikowski Wykad 2 Algorytm przepis
Programowanie obiektowe Andrzej Ziółkowski Wykład 2
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 n Tablica n Stos n Kolejka n Lista n Drzewo n Struktura n Tablica asocjacyjna n
Typy proste Znakowe n Character n String. Buffer Liczbowe n Byte n Short n Integer n Long n Float n Double n Big. Decimal n Big. Integer Logiczne n Boolean
Tablica Dostęp do jednorodnych, powtarzających się danych przez podanie indeksu np. produkcja_netto[2] – może oznaczać wartość produkcji w lutym n
Stos – można pobrać tylko element ostatnio zapamiętany Funkcje: push – zapamiętanie na stosie pop – pobranie ze stosu Zastosowanie: n Implementacja wyrażeń arytmetycznych n 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 – 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 n Zwiększenie czytelności i skrócenie kodu Przykład Deklaracja: float odległość(float x 1, float y 1, float x 2, float y 2) { return math. sqrt((x 1 -x 2)*(x 1 -x 2)+(y 1 -y 2)*(y 1 -y 2)); } Wywołanie: float odl 1 = odległość(245. 67, 567. 41, 247. 59, 588. 09); float odl 2 = odległość(p 1. x, p 1. y, p 2. x, p 2. y);
Przekazywanie parametrów n n 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 n Meble biurowe n Fotele n Półki n Biurka ¨ Meble do sypialni n Łóżka n Szafy ¨ Meble kuchenne ¨ Podział na klasy jest arbitralny i zależy od naszych potrzeb Obiekt: n Fotel „President” jest obiektem należącym do klasy Fotele, Meble biurowe, Meble n Klasy mogą tworzyć hierarchię n 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 obicie. Kolor; String obicie. Kod. Materiału; float cena; … Fotel(String nazwa, String typ) {…} Obicie(String kolor, String materiał) {…} Oblicz. Cenę() {…} Maluj. Fotel() {…} … }
Klasa „Fotel” - użytkowanie Tworzenie obiektu „Fotel” Fotel fot 1 = new Fotel(”President”, ”N-45 -S 3”); Fotel fot 2 = new Fotel(”President”, ”N-45 -S 3”); Specyfikacja fot 1. Obicie(”Jasna. Zieleń”, ”M 33 -221”); fot 2. Obicie(”Wściekły. Fiolet”, ”M 33 -221”); Obliczanie ceny float cena 1 = fot 1. Oblicz. Cenę(); float cena 2 = fot 2. Oblicz. Cenę();
Dziedziczenie (inheritance) Dziedziczenie - tworzenie nowej klasy na bazie klasy już istniejącej p 1, p 2, p 3, p 4 – pola, m 1, m 2, m 3 -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 typ. Sprawy; int max. Czas. Czekania; int czas. Czekania; StańWKolejce(int nr. Okienka); Załatwiaj. Sprawę(); Zrezygnuj(); Oblicz. Czas. Czekania(); }
Język Java - zmienne n Deklarowanie zmiennych ¨ int x = 0; // x-nazwa zmiennej, 0 -wartość ¨ String s = ”abc”; // s-nazwa zmiennej, ”abc”-wartość n Deklarowanie tablicy ¨ int[ ] t = new int[10]; // t-nazwa tablicy, int-typ elementu, 10 -liczba elementów tablicy n 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 n Podstawienia ¨= n Arytmetyczne ¨+ n += -= - * / % Logiczne ¨ && n Bitowe ¨& n || | ~ ^ << >> >>> Relacje ¨ == != > >= < <=
Język Java – instrukcje sterujące Instrukcje warunkowe if (n<10) { x = n; … } else { x = 0; … } n Pętle do { … } while (i > 0); n for (int i=0; i<10; i++) {. . . }
- Slides: 25