Programowanie obiektowe

Slides:



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

Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
PROGRAMOWANIE STRUKTURALNE
Programowanie obiektowe w Javie
Struktury.
Tablice.
Dziedziczenie i jego rodzaje
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB6 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Podstawy programowania
Programowanie obiektowe. Obiekty. Metody. Właściwości.
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy programowania. Język C i C++– podstawy Temat: 1
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
Programowanie obiektowe – zastosowanie języka Java SE
WPROWADZENIE W ŚWIAT OBIEKTÓW
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
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Programowanie strukturalne i obiektowe C++
C++.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Klasy ( uzupełnienie ). Definicja klasy Klasa jest zbiorem logicznie powiązanych danych i funkcji, przeznaczonych do realizacji konkretnego zadania; Zamknięcie.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Dziedziczenie wielobazowe. dana klasa może mieć kilka bezpośrednich klas bazowych: dana klasa może mieć kilka bezpośrednich klas bazowych: kolorpołożenie.
Programowanie Zaawansowane
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Założenia projektowe Javy
PGO - Projektowanie i implementacja pierwszych klas
Zapis prezentacji:

Programowanie obiektowe PO Programowanie obiektowe PO - LAB 1 Wojciech Pieprzyca

PO 1. Wstęp Programowanie obiektowe pozwala nam posługiwać się rzeczywistymi pojęciami, które znamy z codziennego życia. Nie musimy zatem odwoływać się do określonej specyfiki języka maszynowego, ani też nawet do jego bardziej abstrakcyjnych wersji (ale nadal odległych od rzeczywistości, która nas otacza). Obiektowość upraszcza nie tylko samo programowanie, ale także fazę projektowania oprogramowania. Pojęciem kluczowym dla tego sposobu programowania jest obiekt.

PO 2. Czym jest obiekt ? Obiekt jest tworem abstrakcyjnym jednak w dużym stopniu odzwierciedlającym rzeczywistą charakterystykę i działanie maszyn, ludzi, organizacji, itp. Z obiektem możemy utożsamiać 3 cechy: a) stan - dane opisujące obiekt tzw. składowe czyli informacje które obiekt ZNA, b) zachowanie - funkcje jakie może wykonywać obiekt tzw. metody, czyli zachowania które obiekt WYKONUJE, c) tożsamość - pozwala na jednoznaczne odróżnianie obiektów od siebie.

PO 3. Klasy Klasa jest pojęciem pierwotnym dla obiektu ponieważ każdy obiekt jest reprezentantem jakiejś klasy obiektów (czyli, że obiekty powstają na podstawie wcześniej zdefiniowanego opisu klasy). Klasa grupuje obiekty tego samego rodzaju, posiadające tę samą strukturę. Klasę możemy wyobrazić sobie jako matrycę służącą do tworzenia obiektów. W ten sposób informujemy kompilator jakie składowe i jakie metody zawiera dana klasa, a co za tym idzie poszczególne obiekty, które są związane z daną klasą. KLASA OBIEKTÓW o1 o2 o3 o4

PO 4. Przykład klasy Rozpatrzmy klasę samochód. Jak wiemy każdy obiekt typu samochód posiada dość podobną charakterystykę i funkcjonalność. Przykładem opisu klasy samochód może być kolor, masa, rodzaj silnika, elementy wyposażenia, itp. Jako funkcje (metody) możemy z kolei wyróżnić: zmianę prędkości, zmianę biegu, hamowanie, przyspieszanie, itp. Mamy więc klasę samochód na postawie której możemy stworzyć obiekty tej klasy, a więc konkretne wystąpienia klasy takie jak np. Ford, Mercedes, Honda, itp.

PO 5. Dziedziczenie Dziedziczenie polega na tworzeniu klas (tzw. klas potomnych) na podstawie klas bardziej ogólnych (tzw. klas bazowych). Klasa potomna dziedziczy wszystkie metody oraz składowe klasy bazowej. W podanym przykładzie klasy Focus, Ka i Mondeo dziedziczą te elementy po klasie Ford. Dodatkowo każda z klas potomnych może mieć własne składowe i metody, nie związane z klasą bazową.

6. Komunikacja obiektów PO W sposób uproszczony możemy przyjąć, że program obiektowy składa się z wielu obiektów komunikujących się między sobą, wymieniających informacje i wywołujących wzajemnie swoje metody. Musi zatem istnieć odpowiedni mechanizm komunikacji obiektów. Obiekty zwykle komunikują się poprzez wywołanie metod publicznych, tzn. takich które są dostępne spoza samego obiektu macierzystego. W przykładzie widzimy, ze obiekt kierowca wywołuje metodę publiczną zmianaBiegu obiektu samochód.

PO 7. Enkapsulacja (I) Enkapsulacja jest próbą ukrycia niektórych skladowych i metod obiektu przed dostępem z zewnątrz (czyli przez inne obiekty). Dobrym zwyczajem jest pisanie dla wszystkich skladowych (zmiennych) do których istnieje potrzeba dostania się z zewnątrz obiektu, odpowiednich metod dostępowych. Na przykład dla zmiennej int liczba, napisalibyśmy dwie metody dostępowe ustawLiczbe(int x) ustalającą wartość zmiennej na podaną wartość x i pobierzLiczbe() zwracającą aktualną wartość liczby. Taki sposób programowania chroni składową x przed bezpośrednim dostępem i ingerencją z zewnątrz. Dzięki temu w metodach dostępowych można kontrolować sposób zmiany tej wartości.

PO Enkapsulacja (II) Ze względu na możliwy dostęp wyróżniamy 3 rodzaje składowych: 1) prywatne (private) – przeznaczone wyłącznie do użytku wewnątrz danej klasy 2) publiczne (public) – dostęp do nich jest nieograniczony, tzn. możliwy zarówno w ramach klasy jak i spoza niej, 3) chronione (protected) – dostępne wewnątrz danej klasy, ale również dla klas potomnych (patrz dziedziczenie) oraz klas i metod zaprzyjaźnionych (o tym powiemy później).

8. Pierwszy program (I) PO W celu napisania programu skorzystamy z darmowego kompilatora Dev C++. Po uruchomieniu programy wybieramy ikonę , aby utworzyć nowy projekt.

Pierwszy program (II) PO Dalej wybieramy opcję Console Application i wpisujemy nazwę nowego projektu, oraz jeszcze raz zatwierdzamy podaną nazwę.

Pierwszy program (III) PO Pierwszy program (III) Po uruchomieniu konsoli automatycznie generowany jest szkielet programu, Zawiera on dyrektywy kompilatora (rozpoznamy je po tym, że zaczynają się od znaku #), podstawowa dyrektywa kompilatora taka jak np. include pozwala na dołączenie plików nagłówkowych (czyli deklaracji funkcji bibliotecznych, które będą nam potrzebne podczas pisania programów). Przykładem pliku nagłówkowego jest iostream.h.

Pierwszy program (IV) PO Na początku będą nam potrzebne funkcje biblioteczne z 2 plików nagłówkowych: cstdlib – standardowa biblioteka C, którą domyślnie dołącza kompilator Dev C++, iostream – biblioteka wejścia/wyjścia, pozwala m.in. wyświetlać informacje na strumieniu wyjściowym (np. monitorze) i pobierać dane ze strumienia wejściowego (np. klawiatury),

Pierwszy program (V) PO Każdy program w języku C obowiązkowo zawiera funkcję main. Jest to główna funkcja programu od której rozpoczyna się proces wykonywania programu. Treść każdej funkcji (tzw. ciało programu) zawiera się w obszarze ograniczonym przez dwa nawiasy klamrowe. { ….. (ciało) }

PO Pierwszy program (VI) Pierwszy program będzie wyświetlał powitanie na ekranie. //dyrektywy dotyczące plików nagłówkowych #include <cstdlib> #include <iostream> //definicja funkcji main int main(int argc, char* argv[]) { //wyświetlenie napisu na ekranie i przejście do nowej linii cout << ”Witaj w swoim pierwszy programie!” << endl; //oczekiwanie na naciśnięcie klawisza system(”PAUSE”); return EXIT_SUCCESS; }

Pierwszy program (VII) PO Pierwszy program (VII) Uwagi do programu: - niektóre linie kodu poprzedzone znakami // stanowią komentarz i nie są brane pod uwagę w czasie kompilacji programu, - funkcja main zawiera argumenty wejściowe i wyjściowe, ponieważ jednak tworzona jest ona automatycznie przez środowisko Dev C++ to na razie pominiemy ten aspekt i wrócimy do jego omówienia w rozdziale dotyczącym funkcji, - jedyną linią kodu do samodzielnego wpisania jest ta z instrukcją cout powodującą wysłanie tekstu przekazanego po operatorze << na domyślny strumień wyjściowy (zwykle monitor). Tekst jawny używany w programie musi zostać objęty apostrofami. Instrukcja endl wymusza przejście do nowej linii, - instrukcja system(”pause”) powoduje zatrzymanie programu aż do naciśnięcia klawisza przez użytkownika, - return w tym przypadku zawraca kod pomyślnego zakończenia funkcji.

9. Jak skompilować program ? (I) PO 9. Jak skompilować program ? (I) W celu kompilacji programu należy nacisnąć klawisze CTRL+F9. Zazwyczaj jednak będziemy jednocześnie chcieli skompilować program i go uruchomić (klawisz F9). Kompilujemy program i…

Jak skompilować program ? (II) PO Jak skompilować program ? (II) KOMPILACJA Sukces :-) Porażka :-( Nie pojawiają się komunikaty o błędach, pojawia się za to okno programu w trybie tekstowym. Kompilator informuje nas o występujących błędach składni i podświetla linie w której wystąpił pierwszy błąd

PO 10. Slowa kluczowe Słowa kluczowe są integralną częścią skladni języka. Oznacza to, że są one zarezerwowane i nie mogą być używane w innych celach niż to pierwotnie założono, nie można ich np. wykorzystać do nadawania nazw zmiennych czy funkcji. Przyklady slów kluczowych: asm, break, case, catch, char, class, const, continue, default, delete, do, double, else, enum, extern, float, for, friend, goto, if, inline, int, long, new, operator, private, protected, public, register, return, short, signed, sizeof, static, struct, switch, this, throw, try, typedef, unsigned, virtual, void, volatile, while

PO 11. Zmienne Pod pojęciem zmiennej rozumiemy zwykle komórkę pamięci, której rozmiar zależy od typu danej, którą chcemy w niej przechowywać. Inny będzie więc rozmiar zmiennej dla liczby całkowitej, a inny dla ciągu znaków. Każda zmienna posiada swój adres w pamięci, jednak odwoływanie się do zmiennej poprzez adres byłoby dość kłopotliwe, dlatego też zmiennym można przyporządkować nazwy. Nazwa składa się z ciągu liter i cyfr, nie może jednak zawierać „polskich liter”, spacji ani rozpoczynać się od cyfry. Nie może być oczywiście taka sama jak istniejące słowo kluczowe. W języku C rozróżniane są duże i male litery.

PO 12. Typy danych Tak jak już wspomnieliśmy każda zmienna w języku C musi mieć ściśle przyporządkowany typ danych. Wyróżniamy następujące podstawowe typy danych: Typ danych Liczba bitów Zakres wartości char 8 -128:127 lub jeden znak ASCII int 32 -2 147 483 648 : 2 147 483 647 unsigned int 0 : 4 294 967 295 short int 16 -32 768 : 32 767 float 3,4*10-38 : 3,4*1038 double 64 2,2*10-308 : 1,8*10308

13. Przykładowy program (I) PO 13. Przykładowy program (I) #include <cstdlib> #include <iostream> #include <math.h> //plik naglowkowy z funkcja sqrt using namespace std; int main(int argc, char *argv[]) { //deklaracja zmiennych float a,b,c; float delta,x1,x2; //pobranie danych z klawiatury cout << "Podaj a: "; cin >> a; cout << "Podaj b: "; cin >> b; cout << "Podaj c: "; cin >> c; //obliczenie delty i pierwiastkow delta = b*b-4*a*c; x1 = (-b-sqrt(delta))/(2*a); //sqrt – pierwiastek kwadratowy x2 = (-b+sqrt(delta))/(2*a); //wypisanie wynikow na ekranie cout << "x1 = " << x1 << endl; cout << "x2 = " << x2 << endl; system("PAUSE"); return EXIT_SUCCESS; }

Przykładowy program (II) PO Przykładowy program (II) Uwagi do programu: jak można latwo się zorientować program nie jest doskonaly, nie sprawdza chociażby czy wskaźnik delta jest nieujemny co jest warunkiem istnienia rozwiązań równania kwadratowego, podobnie nie jest sprawdzane czy iloczyn w mianowniku wyrażenia na rozwiązania x1 i x2 jest niezerowy, w przypadku gdy a=0 uzyskamy błąd dzielenia przez zero, podobnie jak instrukcja cout służyła do wyprowadzenia wyników na ekran, tak instrukcja cin służy do pobrania danych z klawiatury, ponieważ istniała konieczność użycia funkcji pierwiastkowania sqrt, to konieczne było dołączenie funkcji bibliotecznych z pliku nagłówkowego math.h, po zapoznaniu się z instrukcjami warunkowymi na następnym laboratorium będziemy mogli udoskonalić program.

PO 14. Ćwiczenia Proszę wybrać sobie jakiś obiekt ze świata rzeczywistego (obiektem może być także część jakiejś organizacji, struktury, itp.), a następnie: określić składowe i metody występujące w klasie reprezentującej zbiór obiektów, zastanowić się które ze składowych i metod powinny mieć określony dostęp jako private a które mogą być public ? Proszę uruchomić środowisko Dev C++, utworzyć projekt, dopisać odpowiednią linię kodu i spróbować skompilować i uruchomić pierwszy podany program wyświetlający powitanie na ekranie. Proszę napisać program realizujący następujące zadania: pyta użytkownika o jego imię i wyświetla je na ekranie, następnie pyta użytkownika o długość boków a,b prostokąta (liczby całkowite), wylicza obwód (2a+2b) i pole (a*b) i wyświetla wynik na ekranie, następnie pyta użytkownika o promień kuli wylicza jej objętość (4/3*pi*r3) i pole powierzchni (4*pi*r2).