Programowanie obiektowe III rok EiT

15
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IV

description

Programowanie obiektowe III rok EiT. dr inż. Jerzy Kotowski Wykład IV. Program wykładu. Źródła podejścia obiektowego Podstawy metody PRINCE - PR ojects I n C ontrolled E nvironment Podstawy metody LFA - L ogical F ramework A pproach , składanie wniosków o grant - PowerPoint PPT Presentation

Transcript of Programowanie obiektowe III rok EiT

Page 1: Programowanie obiektowe III rok EiT

Programowanie obiektoweIII rok EiT

dr inż. Jerzy KotowskiWykład IV

Page 2: Programowanie obiektowe III rok EiT

Program wykładu

• Źródła podejścia obiektowego • Podstawy metody PRINCE -PRojects In Controlled Environment• Podstawy metody LFA -Logical Framework Approach,

składanie wniosków o grant

• Język C++ - gadżety języka, polimorfizm, klasy, dziedziczenie – Obiektowe języki programowania– Elementy składni

• Przykład problemu• Podstawy języka JAVA

•Klasówka

Page 3: Programowanie obiektowe III rok EiT

Literatura

• C++ for C programmers, Ira Pohl, The Benjamin/Cummings Publishing Company, Inc.

• Inżynieria oprogramowania w projekcie informatycznym, pod redakcją Janusza Górskiego, Wydawnictwo MIKOM, Warszawa 2000

• Symfonia C++, Jerzy Grębosz, Oficyna Kallimach, Kraków 1999

Page 4: Programowanie obiektowe III rok EiT

Programowanie obiektowe - historia• Idea programowania obiektowego została wprowadzona po raz

pierwszy w 1966 roku w języku Simula• Burzliwy rozwój programowania obiektowego od początku lat

80, po powstaniu języka Smalltalk• Do dzisiaj powstało ponad 50 języków programowania

obiektowego• Języki w pełni obiektowe, zaprojektowane od podstaw, takie jak:

Smalltalk, Flavors, Eiffel, OakLisp, Trellis – jedynym dostępnym stylem programowania jest styl obiektowy,

który implementowany jest z reguły w sposób uniwersalny, przejrzysty i wygodny dla użytkownika

• Języki powstałe przez rozszerzenie tradycyjnych języków programowania o elementy obiektowości, takie jak C++, Objective-C, LOOPS, Pascal – możliwy jest zarówno klasyczny, jak i obiektowy styl

programowania. Umożliwia to bogactwo i różnorodność mechanizmów programowania z jednej strony oraz zgodność z popularnymi klasycznymi językami programowania, z których wywodzą się odpowiednie języki obiektowe

• Języki homogeniczne i heterogeniczne

Page 5: Programowanie obiektowe III rok EiT

Smalltalk

• Smalltalk jest zintegrowanym językiem i środowiskiem programowania obiektowego

• Znaczenie języka Smalltalk w przeszłości polegało głównie na tym, że proponował on nowe koncepcje i mechanizmy, które następnie były wdrażane w innych systemach programowania. Traktowano go zatem bardziej jako język eksperymentalny niż stricte komercyjny.

• Główne cechy języka Smalltalk– Wysoka jednorodność i spójność w zastosowaniu podejścia

obiektowego powodująca, że zbiór pojęć i operacji zawartych w języku nie jest liczny,

– Każdy komponent środowiska programowania, który jest adresowalny przez użytkownika, może mu być przedstawiony w sposób czytelny, ułatwiający analizą i manipulowanie nim,

– Smalltalk wyposażono w obiekty pełniące funkcje przypisane zwykle systemowi operacyjnemu, np. zarządzanie pamięcią operacyjną, system plików, edycję tekstów i obrazów graficznych, przydzielanie procesora.

• Smalltalk i C++ zajmują przeciwstawne pozycje w przestrzeni wszystkich języków obiektowych

Page 6: Programowanie obiektowe III rok EiT

C++

• Język C++ jest ewolucyjnym rozszerzeniem języka C• Język C++ zaprojektowano w celu uzyskania następujących jego

własności:– zachowania wysokiej efektywności i przenoszalności języka C,– pełnej zgodności z językiem C,– likwidacji wad języka C, w szczególności słabej kontroli typów danych,– wyposażenia języka w nowoczesne mechanizmy ukrywania danych.

• C++ powstał w Bell Labs w połowie 1980 - Bjarne Stroustrup • C++ dodaje do C koncepcję klasy - mechanizm, który pozwala

wprowadzać nowe typy danych definiowane przez użytkownika abstract data types - ADT. W konsekwencji pozwala to na object oriented programming OOP.

• C++ is an improved C• C is a machine level, while C++ is a problem level

– klasy– funkcje składowe, – dziedziczenie – przeciążanie funkcji i operatorów– mniejszy związek z preprocesorem, nowe biblioteki we-wy i nowe operatory – kontrola widzialności i dostępu (private is hidden and not accessible)– konwersja typów dla argumentów funkcji przekazywanych przez wartość

Page 7: Programowanie obiektowe III rok EiT

Przykład PIERWSZY

• // - nowy komentarz na jedną linię - /* */ dalej dostępne

• <iostream.h> - nowa biblioteka we-wy

• cout - nazwa standard output stream,

• << dwuargumentowy operator przekazujący drugi argument do strumienia - put to operator

#include <iostream.h> // ilustracja C++void main(void){ cout << " C++ is an improved C.\n ";}

#include <iostream.h> // ilustracja C++void main(void){ cout << " C++ is an improved C. " << " \n";}

<< ma nowe znaczenie, zawsze jest wykorzystywany w kontekście z cout

Page 8: Programowanie obiektowe III rok EiT

Elementy składni języka C - Nazwy• Nazwy mają: dane, funkcje, etykiety, etc.

Ala = ma(_kota);• Nazwy tworzy się z liter, cyfr oraz znaku podkreślenia.• Dopuszczalne nazwy zmiennych:

– Cx_1, a_1_2, – Ala_ma_kota, Liczba_zmiennych – xyz, xYz, XyZ

• Język C prawie wszędzie odróżnia małe litery od dużych. Wszystkie wymienione powyżej nazwy są różne.

• Ograniczenia:– Pierwszy znak nie może być cyfrą– Pierwszy znak może być znakiem podkreślenia ale po początkowych

znakach podkreślenia znowu nie może być wpierw cyfra– Nazwa zmiennej (identifier) może mieć dowolną długość. Język C

odróżnia zmienne po określonej liczbie pierwszych znaków (w produktach Borlanda jest to standardowo 32 - identifier length)

• Nazwa nie może być słowem kluczowym języka

Page 9: Programowanie obiektowe III rok EiT

Składnia języka C++ – Słowa kluczowe

• Borland 5.x• Razem 48 słów kluczowych• 17 słów kluczowych charakterystycznych dla C++• Zbiór słów kluczowych języka C++ jest nadzbiorem zbioru słów kluczowych języka C

asm auto 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 template this throw try typedef

union unsigned virtual void volatile while

Page 10: Programowanie obiektowe III rok EiT

Język C++ – Typy wbudowane

• Podstawowe typy danych

char

int

float

double• Kwalifikatory

short

long

signed

unsigned

Typy Wartości sizeof()charsigned char

-128 ... 127-2

7 ... 27-1

1

unsigned char 0 ... 255 1shortsigned shortintsigned int

-32768 ... 32767-2

15 ... 2

15-1

2

unsigned shortunsignedunsigned int

0 ... 655350 ... 2

16-1

2

longsigned long

-2147483648 ... 2147483647-2

31 ... 2

31-1

4

unsigned long 0 ... 4 294 967 295 (232 - 1) 4

Typy Wartości sizeof()float -3.4e-38 ... 3.4e38 4double -1.7e-308 ... 1.7e308 8long double -3.4e-4932 ... 3.4e4932 10

Page 11: Programowanie obiektowe III rok EiT

Język C – Operatory

• Operatory wymienione w jednym wierszu mają ten sam priorytet.

• Wiersze tabeli ustawione są według malejącego priorytetu.

• Operator jest lewostronnie (prawostronnie) łączny, jeżeli w wyrażeniu zawierającym co najmniej dwa takie operatory na tym samym poziomie struktury nawiasowej najpierw jest wykonywany operator lewy (prawy).

• W języku C nie określa się kolejności obliczania argumentów operatora ani kolejności wyznaczania argumentów funkcji.

Lp. Operator Łączność

15 () [] -> . L

14 ! ~ ++ -- - * & sizeof P

13 * / % L

12 + - L

11 << >> L

10 < <= > >= L

9 == != L

8 & L

7 ^ L

6 | L

5 && L

4 || L

3 ?: P

2 = += itp. P

1 , L

Page 12: Programowanie obiektowe III rok EiT

Język C++ – Operatory

Symbol Nazwa Zastosowanie

17 :: określenie zakresu nazwa_klasy::składnik L

:: nazwa globalna ::nazwa_globalna P

16 -> wybranie składnika wskaźnik->składnik L

[ ] element tablicy wskaźnik[wyrażenie]

( ) wywołanie funkcji funkcja(lista_argumentów)

( ) nawias w wyrażeniach (wyrażenie)

15 sizeof rozmiar obiektu sizeof(wyrażenie) P

sizeof rozmiar typu sizeof(typ)

++ post inkrementacja lwartość ++

++ pre inkrementacja ++ lwartość

-- post dekrementacja lwartość --

-- pre dekrementacja -- lwartość

~ dopełnienie do 2 ~ wyrażenie

! negacja ! wyrażenie

Page 13: Programowanie obiektowe III rok EiT

Język C++ – Operatory c.d. 1

Symbol Nazwa Zastosowanie

15 - jednoargumentowy minus - wyrażenie P

cd + jednoargumentowy plus + wyrażenie

& adres czegoś & lwartość

* odniesienie się wskaźnikiem

* wyrażenie

new kreuj (rezerwuj) new typ

delete zlikwiduj (anuluj rezerwację) delete wskaźnik

delete[] zlikwiduj wektor delete [ ] wskaźnik

( ) rzutowanie (konwersja typu)

(typ)wyrażenie

14 Wybór składnika wskaźnikiem:

L

.* - i nazwą obiektu obiekt.*wsk_do_składn.

->* - i wskaźnikiem do obiektu

wsk ->*wsk do składn.

13 * mnożenie wyraż *wyraż L

/ dzielenie wyraż /wyraż

% modulo (reszta) wyraż %wyraż

Page 14: Programowanie obiektowe III rok EiT

Język C++ – Operatory c.d. 2

Symbol Nazwa Zastosowanie

12 + dodaj (plus) wyraż + wyraż L

- odejmij (minus) wyraż - wyraż

11 << przesunięcie w lewo lwartość << wyraż L

>> przesunięcie w prawo lwartość >> wyraż

10 < mniejsze niż wyraż < wyraż L

<= mniejsze lub równe wyraż <= wyraż

> większe od wyraż > wyraż

>= większe lub równe wyraż >= wyraż

9 == równe wyraż == wyraż L

!= nie równe wyraż != wyraż

8 & iloczyn bitowy wyraż & wyraż L

7 ^ bitowa różnica symetryczna

wyraż ^ wyraż L

6 | bitowa suma wyraż I wyraż L

5 && koniunkcja wyraż && wyraż L

Page 15: Programowanie obiektowe III rok EiT

Język C++ – Operatory c.d. 3

Symbol Nazwa Zastosowanie

4 || alternatywa wyraż I I wyraż L

3 ?: arytmetyczne if wyraż ? wyraż : wyraż L

2 = zwykłe przypisanie lwartość = wyraż P

*= mnóż i przypisz lwartość *= wyraż

/= dziel i przypisz lwartość /= wyraż

%= modulo i przypisz lwartość %= wyraż

+= dodaj i przypisz lwartość += wyraż

-= odejmij i przypisz lwartość -= wyraż

<<= przesuń w lewo i przypisz lwartość «= wyraż

>>= przesuń w prawo i przypisz

lwartość »= wyraż

&= koniunkcja i przypisanie lwartość &= wyraż

|= alternatywa i przypisanie lwartość I = wyraż

^= exclusive or i przypisanie lwartość ^= wyraż

1 , przecinek wyraż , wyraż L