cw1 cpp

background image

Podstawy

programowania
obiektowego

Ćwiczenia laboratoryjne nr 1

Temat: Wstęp do programowania obiektowego

Prowadzący:

mgr inż. Dariusz Rataj

Koszalin 2001

background image

Podstawy programowania obiektowego

Strona 2

Skrócony spis treści:

Część 1 - Programowanie obiektowe w języku C++

Część 2 - Programowanie obiektowe w środowisku Borland C++Builder

1. Programowanie obiektowe w języku C++

1.1. Cel programowania obiektowego

Programowanie obiektowe jest próbą "przeniesienia" rzeczywistości na platformę maszyn liczących zwanych

komputerami. Człowiek w życiu codziennym postrzega przedmioty (obiekty) rzeczywiste w sposób intuicyjny nie

zwracając uwagi na szczegóły zachowania czy stanu przedmiotu. W programowaniu strukturalnym programista jest

zmuszony do znajomości wielu parametrów symulowanego obiektu. Celem programowania obiektowego jest

uzyskanie możliwości wydawania poleceń dla symulowanego obiektu rzeczywistego bez konieczności zagłębiania się

w szczegóły jego konstrukcji czy stanu.

1.2. Przykład symulacji obiektu rzeczywistego

W tej części przedstawiony zostanie prosty przykład opisu obiektu rzeczywistego - samochodu. Widząc samochód

jadący ulicą przeciętny człowiek zwróci uwagę jedynie na ogólne cechy pojazdu, np.: wielkość (duży, mały), kolor

itd. Jadąc samochodem "wydajemy polecenia": przyspiesz, zwolnij, zatrzymaj itd. Opis obiektu rzeczywistego na

poziomie języka programowania powinien umożliwić wydawanie tego typu poleceń. Każdy obiekt rzeczywisty

posiada trzy elementy: tożsamość (nazwa), stan lub cechy obiektu, zachowanie (działania na obiekcie).

Przykładowy samochód jest oczywiście obiektem rzeczywistym złożonym z wielu podzespołów, części i możemy
opisać go bardzo szczegółowo. W wielu zastosowaniach wystarczy nam jednak opis tylko niektórych cech obiektu.

Takie podejście do opisu (pewne cechy są istotne inne są bez znaczenia) określane są w teorii obiektowej mianem

abstrakcji. Programista operuje jedynie na pewnym poziomie abstrakcji niezbędnym do zrealizowania celu

oprogramowania, np. inaczej będzie wyglądał opis obiektu programisty piszącego grę "wyścigi samochodowe", a

inaczej opis do celów symulacji wypadków wykonany dla firmy produkującej samochody. Poniżej przedstawiony

został prosty przykład opisu obiektowego (obiektu - samochodu) demonstrujący zasady tworzenia symulacji

obiektu rzeczywistego.

Prezentowany przykład ogranicza się tylko do elementarnych cech samochodu: marka, model, kolor, pozX (pozycja

X), pozY (pozycja Y) i czterech czynności: ustawMarke, ustawModel, ustawKolor, przesun operujących na cechach.

W terminologii programowania obiektowego cechy opisujące stan obiektu będziemy nazywać polami obiektu (lub

zmiennymi składowymi obiektu) natomiast czynności nazwiemy metodami (lub procedurami i funkcjami

składowymi obiektu).

1. Tożsamość (nazwa) - samochód

2. Stan obiektu (cechy opisujące obiekt):

- Marka
- Model

- Kolor

- Pozycja (współrzędne x i y)

3. Zachowanie (działania na obiekcie):

- Nazwanie marki

- Nazwanie modelu

- Zmiana koloru

- Przesunięcie samochodu - zmiana

położenia (pozycji)

Obiekt rzeczywisty

Opis obiektu

rzeczywistego

class

samochod {

public

:

char

marka[

20

];

char

model[

20

];

int

kolor;

int

pozX, pozY;

samochod();

void

ustawMarke(

char

*s);

void

ustawModel(

char

*s);

void

ustawKolor(

int

k);

void

przesun(

int

x,

int

y);

};

Definicja typu
obiektowego

(Zgodnie ze składnią języka

programowania C++)

background image

Podstawy programowania obiektowego

Strona 3

Po zdefiniowaniu obiektu możemy wykorzystać obiekt w programie głównym. Na początek należy zdefiniować

zmienną obiektową klasy samochod:

samochod car1;

// deklaracja obiektu (utworzenie instancji obiektu)

Następnie w ciele programu głównego możemy wywołać wcześniej zdefiniowane funkcje i procedury obiektu.

Przykładowy program główny symuluje jazdę samochodu po ekranie monitora (kursory: góra, dół, prawo, lewo).

Pełny kod programu definiującego i wykorzystującego obiekt

samochod:

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>

class

samochod {

public

:

// pola (zmienne)

char

marka[

20

];

char

model[

20

];

int

kolor;

int

pozX, pozY;

// metody (funkcje)

samochod();

// konstruktor

void

ustawMarke(

char

*s);

// ustawienie marki samochodu

void

ustawModel(

char

*s);

// ustawienie marki samochodu

void

ustawKolor(

int

k);

// ustawienie koloru samochodu

void

przesun(

int

x,

int

y);

// przesuniecie po ekranie

};

samochod::samochod()
{
pozX =

0

; pozY =

0

;

}

void

samochod::ustawMarke(

char

*s)

{
strcpy(marka, s);

// kopiowanie parametru do zmiennej marka

cout <<

"Marka:"

<< marka << endl;

}

void

samochod::ustawModel(

char

*s)

{
strcpy(model, s);

// kopiowanie parametru do zmiennej model

cout <<

"Model:"

<< model << endl;

}

void

samochod::ustawKolor(

int

k)

{
kolor = k;

// zmiana zmiennej kolor

textcolor(k);

// zmiana koloru znaku na ekranie

cout <<

"Kolor(nr):"

<< kolor << endl;

}

void

samochod::przesun(

int

x,

int

y)

{
pozX += x; pozY += y;

// zmiana zmiennych pozX i pozY

if

(pozX >

80

) pozX=

1

;

if

(pozY >

25

) pozY=

1

;

background image

Podstawy programowania obiektowego

Strona 4

if

(pozX <

1

) pozX=

80

;

if

(pozY <

1

) pozY=

25

;

gotoxy(pozX, pozY);

// przesuniecie kursora

cprintf(

"%c"

,

'X'

);

}

void

main()

{

int

key;

clrscr();
samochod car1;

// utworzenie obiektu typu samochod

car1.ustawMarke(

"Audi"

);

car1.ustawModel(

"A4"

);

car1.ustawKolor(RED);
car1.przesun(

40

,

12

);

do

{

key = getch();

// pobranie kodu klawisza

switch

(key) {

case

72

: car1.przesun(

0

,-

1

);

break

;

// kody kursorow: gora

case

80

: car1.przesun(

0

,

1

);

break

;

// dol

case

77

: car1.przesun(

1

,

0

);

break

;

// prawo

case

75

: car1.przesun(-

1

,

0

);

break

;

// lewo

}
}

while

(key !=

27

);

// rozne od Esc

textcolor(WHITE);
clrscr();
}

2. Programowanie obiektowe w C++ Builder

2.1. Środowisko programowania pod Windows - C++ Builder

Nowoczesne środowiska programowania pod system Windows takie jak Borland C++ Builder

umożliwiają stworzenie programu okienkowego wykorzystującego gotowe obiekty zdefiniowane

w środowisku graficznym systemu operacyjnego lub w samym środowisku C++Builder. W większości

prostych zastosowań nie będzie konieczne "ręczne" definiowanie własnych obiektów tak jak ma to

miejsce w programowaniu strukturalnym. Większość mozolnej pracy (tworzenie plików, okien,
obiektów kontrolnych itp.) wykonuje za nas środowisko programowania. Proces tworzenia aplikacji

Windows w tego typu środowiskach można ująć w kilku podstawowych etapach:

a) Utworzenie projektu (nazwanie projektu, wskazanie katalogu w którym przechowywane będą

wszystkie pliki składające się na projekt). Na tym etapie tworzone jest (automatycznie) główne

okno aplikacji i główne pliki źródłowe aplikacji.

b) Dodanie obiektów kontrolnych do głównego okna aplikacji (menu, napisy, pola tekstowe,

przyciski itp.).

c) Utworzenie okien dodatkowych posiadających również obiekty kontrolne, które należy

zdefiniować (podobnie jak w głównym oknie aplikacji: patrz pkt. 2 i 3). Okna dodatkowe

najczęściej są aktywowane przez okno główne aplikacji (są aktywowane w metodach obsługi

zdarzeń obiektów kontrolnych), np.: zdarzenie "kliknięcie na przycisku" w głównym oknie aplikacji

spowoduje uruchomienie (aktywowanie) okna dodatkowego.

d) Zdefiniowanie odpowiednich "zdarzeń" i przypisanie ich do obiektów kontrolnych, np.

zdefiniowanie metody (funkcji, procedury), która zostanie wykonana po kliknięciu na przycisku.

e) Skompilowanie i uruchomienie (jeżeli nie ma błędów) oraz przetestowanie działania aplikacji.

background image

Podstawy programowania obiektowego

Strona 5

2.2. Przykład prostej aplikacji w CBuilder - "Ankieta"

Program "Ankieta" będzie umożliwiał przeprowadzenie prostej ankiety osobowej (np. ucznia, studenta)

zawierającej pytania o imię, nazwisko, wiek i klasa. Po wypełnieniu ankiety użytkownik może

wygenerować podsumowanie wykorzystujące dane z ankiety. Podsumowanie zostanie umieszczone w

dodatkowym oknie aplikacji a następnie zapisane do pliku o nazwie wybranej przez użytkownika. Do

zapisania pliku o wybranej nazwie i w wybranym katalogu na dysku można użyć standardowego
obiektu SaveDialog z grupy obiektów Dialogs.

a) Utworzenie projektu

Z menu górnego wybieramy polecenie File - New Application. Następnie polecenie File - Save

Project as.... Otworzy się okno dialogowe w którym wybieramy katalog naszego projektu i nazwę

plików (pliku źródłowego Unit1.cpp - plik okna głównego aplikacji; pliku projektu Project1.bpr). Po

wykonaniu tych czynności utworzy się puste okno główne aplikacji gotowe do edycji o nazwie Form1.

Okno główne aplikacji

Okno zapisu do pliku (okno

standardowe z grupy Dialogs)

Okno dodatkowe aplikacji

background image

Podstawy programowania obiektowego

Strona 6

b) Dodanie obiektów kontrolnych do głównego okna aplikacji

Dodawane obiekty kontrolne możemy wybrać z podręcznego menu obiektów. W głównym oknie

aplikacji "Ankieta" użyjemy obiektów kontrolnych z grupy Standard:

-

Label (tekst statyczny).

-

Edit (pole tekstowe służące do wprowadzania krótkich tekstów).

-

Button (graficzny przycisk)

c) Utworzenie okien dodatkowych - okno "Wynik ankiety"

Aby dodać okno do aplikacji wybieramy polecenie File - New Form. Utworzy się nowy obiekt okna o

nazwie Form2 (plik źródłowy Unit2.cpp). Będzie to drugie okno aplikacji - "Wynik ankiety". W drugim

oknie ("Wynik ankiety") aplikacji użyjemy obiektów kontrolnych z grupy Standard:
-

GroupBox (ramka grupująca obiekty).

-

Memo (pole tekstowe służące do wprowadzania dłuższych tekstów złożonych z kilku linii tekstu).

-

Button (graficzny przycisk) x 2.

Dodatkowo w tym oknie dodamy standardowe okno SaveDialog z grupy Dialogs (poszukać tego

obiektu). Obiekt ten (okno dialogowe zapisu do pliku) będzie nazywał się SaveDialog1.

Dodajemy także przycisk (Button) "Zamknij".

d) Zdefiniowanie zdarzeń i przypisanie ich do obiektów kontrolnych

- zdarzenia w głównym oknie aplikacji

W oknie głównym aplikacji (obiekt Form1 - "Ankieta") zdefiniujemy jedno zdarzenie - kliknięcie na

przycisku "Zapisz do pliku". W tym celu klikamy na przycisku "Zapisz do pliku" - w oknie Object

Inspector pojawią się właściwości obiektu Button. Przechodzimy do zakładki Events (zdarzenia) i

klikamy dwa razy na zdarzeniu OnClick (kliknięcie na obiekcie). Środowisko programistyczne powinno

utworzyć automatycznie metodę obsługi zdarzenia OnClick o nazwie Button1Click. Teraz definiujemy

tą metodę wpisując wewnątrz fragment kodu w języku C++:

Form1->Memo1->Text = Edit1->Text +" nazywa się "+ Edit2->Text +", ma "+

Edit3->Text +" lat i chodzi do klasy " + Edit4->Text;
Form2->ShowModal();

-

Pierwsze polecenie zmienia pole Text obiektu Memo1 okna Form2. W tym poleceniu składamy
tekst obiektu Memo1 odczytując dane (tekst) z pól Edit okna głównego. Każdy obiekt typu Edit

posiada pole Text przechowujące dane wpisane do obiektu, np.: Edit1->Text przechowuje tekst

wpisany w obiekcie Edit1 (imię ankietowanego).

-

Drugie polecenie uaktywnia drugie okno w trybie modalnym.

Wszystkie okna systemu Windows mogą pracować w dwóch podstawowych trybach:

-

Modalnym (aktywacja procedurą ShowModal),

-

Standardowym lub niemodalnym (aktywacja procedurą Show),

Label

Edit

Button

Button

Memo

GroupBox

background image

Podstawy programowania obiektowego

Strona 7

- zdarzenia w oknie "Wynik ankiety"

W oknie dodatkowym aplikacji (obiekt Form2 - "Wynik ankiety") zdefiniujemy jedno zdarzenie -

kliknięcie na przycisku "Podsumowanie". W tym celu klikamy na przycisku "Podsumowanie" - w oknie

Object Inspector pojawią się właściwości obiektu Button. Przechodzimy do zakładki Events

(zdarzenia) i klikamy dwa razy na zdarzeniu OnClick (kliknięcie na obiekcie). Środowisko

programistyczne powinno utworzyć automatycznie metodę obsługi zdarzenia OnClick o nazwie
Button1Click. Teraz definiujemy tą metodę wpisując wewnątrz fragment kodu w języku Delphi:

if (SaveDialog1->Execute()) Memo1->Lines->SaveToFile(SaveDialog1->FileName);

Obiekt SaveDialog posiada metodę Execute, która uruchamia okno dialogowe wyboru pliku na

dysku. Po zakończeniu działania okna w polu (zmiennej) FileName przechowywana jest pełna

(z pełną ścieżką dostępu) nazwa wybranego pliku. Metoda SaveToFile zapisuje tekst obiektu Memo

do wybranego pliku.

W oknie "Wynik ankiety" znajduje się (patrz: punkt c) przycisk "Zamknij". Dla tego przycisku

definiujemy pole (właściwość) ModalResult równe mrOk. MrOk jest jednym z kilku poleceń okna
otwartego w trybie modalnym i powoduje "potwierdzenie" działań wykonanych w oknie. W naszym

przykładzie spowoduje zamknięcie okna.

e) Skompilowanie, uruchomienie i przetestowanie aplikacji

Po wykonaniu wszystkich wyżej opisanych działań możemy skompilować i uruchomić aplikację. W tym

celu wybieramy polecenie z menu górnego Run - Run. Następnie należy sprawdzić czy wszystkie

zaprogramowane działania wykonują się poprawnie:

-

wypełniamy ankietę,

-

klikamy przycisk "Podsumowanie",

-

klikamy przycisk "Zapisz do pliku" okna "Wynik ankiety",

-

wybieramy katalog i podajemy nazwę pliku do którego chcemy zapisać dane - polecenie "Zapisz"

okna SaveDialog,

-

teraz można pozamykać okna i zakończyć działanie aplikacji,

-

korzystając z dowolnego edytora tekstowego systemu Windows (np. Notatnik) sprawdzamy: czy

został poprawnie utworzony plik tekstowy i czy zawiera poprawny tekst wynikowy ankiety.

2.3. Zadanie do samodzielnego wykonania - "Prosta przeglądarka
graficzna"

Utworzyć program (aplikację) Windows:

Obiekt

Image

Menu górne
obiekt typu

Menu

Grafika
umieszczona
w obiekcie

Image


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron