Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Programowanie obiektowe - struktury danych PDF Drukuj Email
Ocena użytkowników: / 3
SłabyŚwietny 
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++
Wpisany przez Administrator   

Z tej lekcji dowiesz się:

  1. Na czym polega programowanie obiektowe.
  2. Co to jest struktura i jak się ją definiuje
  3. Co to jest konstruktor

 


Do tej pory programy, które powstawały w ramach niniejszego kursu były programami strukturalnymi. Tzn., że były wykonywane krok po kroku, z uwzględnieniem instrukcji regulujących powtarzanie bądź pominięcie określonych operacji. Jednak "filozofia" działania programu polegała na wykonaniu konkretnej listy operacji w ściśle określonej kolejności a miejsce zapisania operacji było bardzo ważne dla kolejności jej wywołania. Troszkę inaczej programuje się z użyciem obiektowego sposobu zapisu.
Taki sposób postrzegania/zapisywania danych zakłada, że wszystko, co można zapisać jest obiektem i ma swoje atrybuty. Np. krzesło zdefiniowane jest przez ilość: 1, przez wysokość: np. 70cm, szerokość: np 60cm, masę: np.  0,6 kg. A więc obiekty to są podmioty, którym można przypisać określone atrybuty(parametry). Parametry obiektu nazywamy jego polami.

 

Definicja struktury w programie:

Wspomniane krzesło można zdefiniować w następujący sposób

struct krzeslo

{

unsigned int ilosc;

float wysokosc_cm;

float szerokosc_cm;

float masa_kg;

}

Zapis ten definiuje obiekt krzesło. Innymi słowy - definicja struktury wprowadza do programu nazwę obiektu oraz nazwy pól czyli cech obiektu, które są istotne dla działania tego programu.

Aby zrozumieć działanie obiektów napiszmy program, który pobiera od użytkownika para metry krzesła a następnie wyświetla je.

 

Ćwiczenie 1:

Napisz program, który tworzy strukturę o nawie krzesło, następnie definiuje obiekt typu krzesło o nazwie taboret. Program pobiera od użytkownika wartości pól obiektu (wysokość, szerokość, masa) i wyświetla je na ekranie:

 

Oto efekt wywołania programu:

 

 

kod programu:

 

 

 Zauważ, że odwołanie się do pola danego obiektu odbywa się tak: taboret.wysokosc_cm, czyli najpierw podaje się nazwę zmiennej danego typu (w tym przypadku krzeslo) a następnie dopisuje się kropkę oraz nazwę pola.

można by zapisać taboret.szerokosc_cm = 100; i taki zapis byłby poprawny.

 

Ćwiczenie 2:

Napisz program, który tworzy strukturę danych o nazwie pudełko przyjmującą parametry: nazwa, wysokosc, szerokosc, glebokosc, masa, ilosc. Program pobiera od użytkownika wartości tych pól a następnie wyświetla na ekranie informację o nich.

 

 

 

Jak zapewne zauważyłeś, dne w programie ułożone są w struktury.  Na przykład struktura danych o nazwie krzesło zawierała daną o nazwie wysokosc. Innymi słowy, parametr wysokosc, a wlasciwie krzeslo.wysokosc_cm był częścią struktury danych o nazwie krzeslo.

 Ćwiczenie 3

Napisz program, który operuje na strukturze danych o nazwie klasa. Struktura zawiera następujące parametry:

liczebnosc

czy_wieczorowa

Parametry podawane są przez użytkownika. Na końcu program wyświetla informację o tym, czy utworzono nowy obiekt typu klasa oraz jakie dane zostały zapisane jako część tego obiektu (struktury)

 

 

kod programu:

 

 

Program działa, ale można za jego pomocą stworzyć tyllko jedną klasę o nazwie z góry zaprogramowanej. 

W zawodowym programowaniu tworzy się definicję struktury (czyli obiektu) a podczas tworzenia samego programu często tworzy się cały zbiór (macierz) obiektów tego typu (można powiedzieć: takiego samego rodzaju) gdzie każdemu można nadać nazwę i zdefiniować wszystkie inne atrybuty. ( a nawet dodać nowe, o czym będzie więcej w artykule poświęconym dziedziczeniu.)

Wyobraźmy sobie, że potrzebujemy napisać program dla szkoły, która składa się z 20 klas i każda z tych klas może być opisana za pomocą atrybutów : nazwa, liczebność, czy_wieczorowa. Nie musimy tworzyć 20 programów z odrębną nazwą klasy w każdym z nich. Co więcej, możemy pozwolić osobie wprowadzającej dane na to, żeby sama sobie wpisała nazwę klasy. 

Trudne?

Zobaczmy:

Napisz program, który  tworzy macierz obiektów typu klasa, definiowanych przez parametry: nazwa, liczebność, czy_wieczorowa. Użytkownik może dodawać nowe obiekty oraz wprowadzać wartości wspomnianych pól.

 

 

 

kod programu:

 

 

 

 

 Myślę, że jest to proste rozwiązanie. Dodaliśmy tylko pętlę pozwalającą dodawać nowe klasy, dopóki jest taka potrzeba oraz licznik, który zlicza ile już klas stworzono. Najważniejsze jest jednak zdefiniowanie macierzy obiektów typy klasa:

 klasa klasy_wsz[100];//stworzenie macierzy obiektow typu klasa

 a właściwie macierzy 100 obiektów takiego typu.

Jeśli do tej pory nie rozumiesz, dlaczego i jak działają powyższe programy, to przeanalizuj to jeszcze raz, bo ta wiedza potrzebna Ci jest, aby zrozumieć poniższe rozumowanie:

 Fajnie by było, gdyby wszystkie te funkcje i procedury związane z tworzeniem (definiowaniem) nowych obiektów danego typu były częścią samej struktury. Takie rozwiązanie nazywa się konstruktorem

Więcej na temat konstruktorów dowiesz się z następnej lekcji poświęconej temu zagadnieniu.

 

Ćwiczenia:

  1. Napisz program, który operuje na obiektach (strukturach) typu stol . Program pobiera od użytkownika wartości pól obiektu (wysokość, szerokość, masa) i wyświetla je na ekranie: (program analogiczny jakpierwszy program w tym artykule)
  2. Napisz program, który operuje na obiektach (strukturach) o nazwie auto z parametrami: string kolor, string marka, string model, int cena, int rocznik, bool czy_dostepny. Użytkownik tego programu może dodawać nawet do 1000 nowych aut, podając parametry każdego z nich. Wskazówka: łatwiej będzie napisać program jeśli stworzy się macierz obiektów typu auto.