Wyklad Inf 18.03.2009, Studia, [xxx] Rok I, Informatyka

[ Pobierz całość w formacie PDF ]
Informatyka
• Dr inż. Lucjan Miękina
• Katedra Robotyki i Mechatroniki
• D-1, p.412, tel. 012 617 3510
• E-mail: miekina@agh.edu.pl
Obiektowe programowanie w języku C++
Język C został uzupełniony o tzw.
rozszerzenie obiektowe,
umożliwiające i wspierające
programowanie zorientowane obiektowo (OOP). Realizowane to jest przez wprowadzenie
szeregu nowych słów kluczowych i mechanizmów języka.
Rozwój technik programowania:

liniowe
- brak procedur i funkcji, wykorzystanie instrukcji skoku warunkowego i
bezwarunkowego jako substytutów strukturalizacji. Realizowane przez język maszynowy,
assembler i wczesne wersje Basic-a.

proceduralne
- opiera się na przepływie danych przez odpowiednio dobrane procedury i
funkcje, realizujące cząstkowe zadania przetwarzania tych danych. Obowiązuje schemat:
Wybierz procedurę realizującą operację na danych, do kodowania procedury użyj
najlepiej dostosowanego algorytmu
. Języki : Fortran, Algol, Pascal, C, Ada, itd.

modułowe
- wymienione wyżej języki proceduralne zawierają wsparcie do modularnego
programowania, które opiera się na wyodrębnieniu części reprezentacji problemu w postaci
modułu,
będącego zbiorem
metod
(funkcji) i danych, na których te metody operują (stałe,
zmienne). Najbardziej istotną nową cechą podejścia modułowego jest możliwość
ukrycia
danych modułu przed nieautoryzowanym dostępem.

obiektowe -
gdzie położono
nacisk na :

tworzenie reprezentacji problemu w postaci zbliżonej do niego samego

łatwą konserwację i rozbudowę oprogramowania

możliwość wielokrotnego użycia modułów programowych (ang.
reusability
)

lepsze wsparcie dla budowy dużych systemów i pracy grupowej

komponentowe
, będące dalszą ewolucją obiektów w kierunku zgodności na poziomie
binarnym, a nie źródłowym. Oznacza to, że tworzy się komponenty poddane kompilacji i
konsolidacji (a więc gotowe do użycia), które zapewniają jednolity interfejs do usług,
których dostarczają.
Cechy obiektowego podejścia do programowania.
Niezależnie od języka implementacji, istnieją ogólne zasady obiektowego podejścia do tworzenia
oprogramowania, nazywane
modelem obiektowym
. Składa się on z poniższych pojęć:

obiekt
– każdy
byt
(pojęcie lub rzecz), mający znaczenie w dziedzinie zastosowania

klasa
– uogólnienie zbioru obiektów, mających takie same atrybuty, operacje i znaczenie. Jeśli pewne
klasy mają wspólną część, to powinna ona być ich wspólną
klasą bazową (
lub inaczej
nadklasą)
.

komunikat
(ang.
message
) – specyfikacja wymiany informacji między obiektami, zawierająca zlecenie
wykonania określonej operacji lub wymiany danych.

abstrakcja proceduralna i abstrakcja danych
- polega na ukrywaniu nieistotnych cech obiektu w
trakcie operacji z nim związanych, dzięki temu że obiekt może być wyposażony w wiedzę o swych
operacjach. Dzięki temu ułatwia się operacje i unika błędów, a także skraca się notację - można lepiej
panować nad złożonymi systemami lub algorytmami.

hermetyzacja
(ang.
encapsulation
) - polega na selektywnym dostępie do szczegółów obiektu
(atrybutów i operacji) i dzięki temu zapewnieniu niezależności (braku niepotrzebnych sprzężeń).
Prywatne
atrybuty i operacje są niedostępne dla otoczenia, stanowiąc elementy wewnętrznego
mechanizmu działania obiektu.
Publiczne
atrybuty i operacje są dostępne dla otoczenia, umożliwiając
odwoływanie się do obiektu za pomocą komunikatów.
Chronione
atrybuty i operacje są dostępne w
ciągu podklas danej klasy.

dziedziczenie
(ang.
inheritance
) - polega na przejmowaniu cech pewnych obiektów przez inne, z
równoczesnym dodawaniem nowych cech - tworzenie tzw.
specjalizacji
. Oznacza to
przyporządkowanie atrybutów i operacji do klas zgodnie z hierarchiczną zależnością, jakiej podlegają
klasy. Dzięki temu można budować systemy złożone, lecz elastyczne w zastosowaniu.

polimorfizm
(ang.
polymorphism
) – polega na nadaniu takiej samej nazwy różnym atrybutom i
operacjom w klasach należących do jednej hierarchii (od nadklasy przez wszystkie podklasy). Pozwala
m.in. na wywołanie tzw.
wirtualnej
metody (procedury lub funkcji), która może mieć różne znaczenie
w zależności od kontekstu wywołania.
Języki realizujące wsparcie dla techniki programowania obiektowego
.
Zestawienie według popularności w zastosowaniach:
C++, Java, Pascal, Ada 95, SmallTalk, Modula,
W oparciu o wymienione zasady modelu obiektowego, powstaje język bardziej zbliżony do
opisywanego problemu (w odróżnieniu od zbliżonego do maszyny).
Dzięki tym założeniom program obiektowo zorganizowany może się składać prawie wyłącznie z
deklaracji zmiennych obiektowych (
instancji
); w trakcie tych deklaracji wykonywane są
wszystkie operacje
inicjalizacji obiektów
(definiowania ich stanu początkowego), tak by
mogły one zacząć funkcjonować w otoczeniu innych obiektów. Dalsze funkcjonowanie
każdego obiektu polega na
odbiorze komunikatów
wysyłanych przez inne obiekty i
odpowiednim ich przetwarzaniu, w ramach którego możliwe jest również wysyłanie
własnych komunikatów, czyli oddziaływanie na otoczenie. Taki model daje większe
możliwości, co jest związane głównie z decentralizacją funkcjonalności (każda klasa
odpowiada za swoją część operacji złożonego systemu) i nie jest potrzebny żaden
nadrzędny mechanizm, który musiałby być odpowiednio bardziej złożony.
Typ obiektowy (klasa).
Klasa może być traktowana jako specjalny rodzaj typu
strukturowego
, składający się z:

pól
(jak w strukturze). Pola klasy służą do opisu stanu obiektu, a więc opisują jego
własności
. Każdy typ obiektowy jest zwykle opisany unikalnym zbiorem własności.

metod
(będących w istocie funkcjami znanymi z języka C) zadeklarowanych
wewnątrz
deklaracji klasy. Metody służą do wykonywania operacji zdefiniowanych dla typu
obiektowego, a więc definiują zachowanie się obiektu. Metody operują w założeniu na
polach dostępnych w klasie i mogą wywoływać inne metody klasy, a także funkcje
zewnętrzne.
Klasa jest blisko związana ze strukturą - po zamianie słowa kluczowego
struct
na słowo
class
z
deklaracji struktury uzyskuje się deklarację klasy. Ponieważ klasa jest uogólnieniem struktury,
więc większość właściwości struktur przechodzi na klasy (m.in. sposób deklarowania,
identyfikowania i dostępu do pól). W związku z tym dalej omawia się tylko te właściwości klas,
które nie wynikają z opisu struktur.
UWAGA: W języku C++ struktura może mieć funkcje.
Składnia deklaracji klasy.
Deklaracja klasy pierwotnej (czyli nie wywodzącej się z innej, już wcześniej zdefiniowanej) ma
postać:
class
<Name> {
[
public
:]
[lista deklaracji pól/metod publicznych]
[
protected
:]
[lista deklaracji pól/metod chronionych]
[
private
:]
[lista deklaracji pól/metod prywatnych]
};
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • enzymtests.keep.pl
  •