psiia po lab1

background image

Programowanie

obiektowe

PO

PO - LAB 1
Wojciech Pieprzyca

background image

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

.

1. Wstęp

PO

background image

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

background image

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ą.

PO

o1

o2

o3

o4

KLASA

OBIEKTÓW

background image

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

background image

5. Dziedziczenie

PO

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ą.

background image

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.

background image

7. Enkapsulacja

(I)

PO

• 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.

background image

Enkapsulacja

(II)

PO

• 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).

background image

8. Pierwszy program

(I)

PO

• W celu napisania programu skorzystamy z darmowego

kompilatora

Dev C++

. Po uruchomieniu programy

wybieramy ikonę , aby utworzyć nowy projekt.

background image

Pierwszy program

(II)

PO

• Dalej wybieramy opcję

Console Application

i wpisujemy

nazwę nowego projektu, oraz jeszcze raz zatwierdzamy

podaną nazwę.

background image

Pierwszy program

(III)

PO

• 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

.

background image

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),

background image

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)

}

background image

Pierwszy program

(VI)

PO

• 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;

}

background image

Pierwszy program

(VII)

PO

• 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.

background image

9. Jak skompilować program ?

(I)

PO

• 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…

background image

Jak skompilować program
?

(II)

PO

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

background image

10. Slowa kluczowe

PO

• 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

background image

11. Zmienne

PO

• 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.

background image

12. Typy danych

PO

• 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

32

0 : 4 294 967 295

short int

16

-32 768 : 32 767

float

32

3,4*10

-38

: 3,4*10

38

double

64

2,2*10

-308

: 1,8*10

308

background image

13. Przykładowy program

(I)

PO

#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;
}

background image

Przykładowy program (II)

PO

• 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

.

background image

14. Ćwiczenia

PO

• 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*r

3

) i pole powierzchni (4*pi*r

2

).


Document Outline


Wyszukiwarka

Podobne podstrony:
PO lab1, Poptymalizacja
PO wyk07 v1
Rehabilitacja po endoprotezoplastyce stawu biodrowego
Systemy walutowe po II wojnie światowej
HTZ po 65 roku życia
Zaburzenia wodno elektrolitowe po przedawkowaniu alkoholu
Organy po TL 2
Metoda z wyboru usprawniania pacjentów po udarach mózgu
03Operacje bankowe po rednicz ce 1
Piramida zdrowia po niemiecku
przewoz drogowy po nowelizacji adr
Opieka nad pacjentem po znieczuleniu i operacji
Dzień po dniu
istota po korekcie
POSTĘPOWANIE FIZJOTERAPEUTYCZNE PO URAZACH NASAD DALSZYCH KOŚCI GOLENI
7 ocena po wyr

więcej podobnych podstron