Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.

Slides:



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

Język C/C++ Funkcje.
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Klasy i obiekty.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Zrównoleglanie programu sekwencyjnego
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Kurs Pascala – spis treści
Dziedziczenie i jego rodzaje
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Podprogramy 1 W Adzie mamy dwa rodzaje podprogramów (subprograms, subroutines): funkcje (functions) i procedury (procedures) Deklaracja i treść funkcji 
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy pochodne 1 Często dogodnie jest wprowadzić nowy typ, który jest podobny do istniejącego, niemniej jednak różny. Niech T będzie pewnym typem. Możemy.
Ogólne jednostki programowe 1
Kompilacja przechodnia
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Rekordy 1 Definicja Typ strukturalny nazywamy typem rekordowym, jeżeli zawiera pewną liczbę nazwanych składowych, które mogą być różnych typów. Dostęp.
Typy wskaźnikowe ogólne 1 Typy wskaźnikowe ogólne (general access types) umożliwiają pośredni dostęp (indirect access), czyli przez wskaźniki, do zadeklarowanych.
Wykład 8 Wojciech Pieprzyca
Podstawy programowania
Programowanie Komputerów
Wstęp do programowania obiektowego
Podstawy C# Grupa .NET PO.
Podstawy programowania
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
Procedury i funkcje.
Podstawy programowania
Programowanie strukturalne i obiektowe
Programowanie obiektowe III rok EiT
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
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 2013/2014
Kurs języka C++ – wykład 9 ( )
PL/SQL – dalsza wędrówka
Programowanie w języku C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Waldemar Bartyna Pytania egzaminacyjne 1.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Programowanie Zaawansowane
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Waldemar Bartyna Pytania egzaminacyjne 1.
Statyczna kontrola typów w SBQL Rafał Hryniów Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na następujących własnościach języka: Hermetyzacji (encapsulation), którą w Adzie zapewniają pakiety i typy prywatne, Ogólności (genericity), którą w Adzie umożliwiają typy ogólne i jednostki programowe ogólne, Dziedziczeniu (inheritance) polegającemu na tym, że nowy typ przejmuje pewne, lub wszystkie własności istniejącego typu macierzystego. W Adzie dziedziczenie umożliwiają typy pochodne i typy rozszerzalne, nazywane czasami typami znakowanymi (tagged types), Polimorfizmowi (polymorphism) częściowo realizowanemu w Adzie przez przeciążanie podprogramów i rozszerzonemu przez pojęcie wiązania dynamicznego (dynamic dispatching).

Programowanie zorientowane obiektowo 2 Typy rozszerzalne Typ rekordowy może być zadeklarowany jako typ rozszerzalny (tagged type) w celu zaznaczenia, że może być rozszerzony przez dodanie pewnych pól. Każdy obiekt typu rozszerzalnego otrzymuje znacznik (tag), który jest podobny do ukrytego wyróżnika, przy czym znaczniki manipulowane są automatycznie przez wykonywany program. Przykład Weźmy pod uwagę następującą deklarację typu rozszerzalnego:

Programowanie zorientowane obiektowo 3 type Person_Type is tagged record Name : Name_Type; Gender : Gender_Type; Birth_Date : Date_Type; end record; przy czym type Gender is (Female, Male); Name_Type jest pewnym typem napisowym, a Date_Type może być typem rekordowym postaci type Date_Type is record Day: Day_Number := Day_Number'First; Month: Month_Number := Months'First; Year: Year_Number := Year_Number'First; end record;

Programowanie zorientowane obiektowo 4 Typ Person_Type zadeklarowano w pakiecie definicyjnym Persons razem z pewną liczbą operacji wykonywanych na danych tego typu. Chcemy wydzielić osoby nazywane zatrudnionymi Employee, których dane powinny dodatkowo obejmować numer identyfikacyjny oraz datę zatrudnienia. type Employee_Type is new Person_Type with record ID_Number : ID_Type; Start_Date : Date_Type; end record;

Programowanie zorientowane obiektowo 5 W ten sposób otrzymujemy nowy typ rekordowy, który ma pięć pól: dwa nowe ID_Number i Start_Date oraz trzy odziedziczone po typie Person. Zauważmy, że nowy typ można zadeklarować wraz z odpowiednimi operacjami w nowym pakiecie, lub programie, przy czym istotne jest to, że nie ma to wpływu na istniejący już pakiet Persons i programy klienckie tego pakietu. Możemy zdefiniować następne typy type Professional_Type is new Employee_Type with record Month_Salary : Quantity; end record;

Programowanie zorientowane obiektowo 6 type Clerical_Type is new Employee_Type with record Hourly_Wage : Quantity; end record; przy czym Quantity jest typem reprezentującym wartości w używanej walucie razem z odpowiednimi operacjami na danych tego typu. Konwersja między typami Podane typy tworzą hierarchię typów Person_Type Employee_Type Proffesional_Type Clerical_Type

Programowanie zorientowane obiektowo 7 Możemy dokonać jawnej konwersji typu z niższego poziomu na typ wyższego poziomu. P : Person_Type; E : Employee_Type; R : Professional_Type; Możemy napisać agregat rekordowy R := (Name => "Maria Madra", Gender => Female, Birth_Date => (Day => 21, Month =>10, Year => 1976), ID_Number => 2345, Start_Date => (Day => 1, Month => 6, Year => 2001), Month_Salary => );

Programowanie zorientowane obiektowo 8 i dokonać konwersji w górę P := Person_Type(R); która jest znaną formą. W przypadku typów rozszerzalnych podana konwersja usuwa dodatkowe pola. Jeżeli dokonujemy konwersji w dół, to ponieważ typy z poziomu niższego posiadają dodatkowe pola, stosujemy specjalną formę agregatu. Jeżeli mamy P := (Name => " Maria Madra", Gender => Female, Birth_Date => (Day => 21, Month =>10, Year => 1976));

Programowanie zorientowane obiektowo 9 możemy napisać E := (P with ID_Number => 2345, Start_Date => (Day => 1, Month => 6, Year => 2001)); Część określająca wartości dodatkowych pól, czyli podana po słowie kluczowym with nazywana jest rozszerzeniem agregatu (extension aggregate). Oczywiście, należy zwrócić uwagę na to, że zazwyczaj rekordowy typ rozszerzalny jest typem prywatnym, co powoduje, że programy klienckie nie mogą zawierać agregatów odwołujących się do poszczególnych pól rekordu.

Programowanie zorientowane obiektowo 10 Operacje na typach rozszerzalnych W przypadku typów rozszerzalnych typ wyprowadzony z typu macierzystego dziedziczy po nim wszystkie operacje podstawowe, którymi, jak pamiętamy, są atrybuty, operacje zdefiniowane wstępnie oraz funkcje, procedury operatory, których parametrami formalnymi, lub wynikami są dane typu macierzystego. Często istnieje potrzeba zmiany tych operacji w przypadku typu wyprowadzonego. Przykład Geometria elementarna Przypuśćmy, że chcemy opracować rodzinę pakietów dostarczających narzędzi do obliczeń z geometrii elementarnej.

Programowanie zorientowane obiektowo 11 package Objects is type Object_Type is tagged record X_Coord : Float; Y_Coord : Float; end record; function Distance (Obj : Object_Type) return Float; function Area (Obj : Object_Type) return Float; end Objects;

Programowanie zorientowane obiektowo 12 with Objects; use Objects; package Shapes is type Point is new Object_Type with null record; type Circle is new Object_Type with record Radius : Float; end record; function Area (C : Circle) return Float; end Shapes;

Programowanie zorientowane obiektowo 13 package body Objects is function Distance (Obj : Object_Type) return Float is begin return Sqrt(Obj.X_Coord**2 + Obj.Y_Coord**2); end Distance; function Area (Obj : Object_Type) return Float is begin return 0.0; end Area; end Objects;

Programowanie zorientowane obiektowo 14 Zadanie 1.Napisać deklarację typu Cylinder wyprowadzonego z typu Circle. Nowy typ powinien mieć pole Height, które reprezentuje wysokość walca. 2.Przypuśćmy, że mamy zadeklarowaną zmienną O : Object_Type := (1.0, 0.5); Napisać rozszerzenie agregatu przypisującego zmiennej Cyl:Cylinder promień koła równy 40.0 i wysokość walca równą 50.0.