lista4

background image

Uniwersytet Zielonogórski

Instytut Sterowania i Systemów Informatycznych

Programowanie obiektowe w C++

Lista 4  Wst¦p do klas

1 ‚wiczenia

1. Niech b¦dzie dany typ zªo»ony reprezentuj¡cy liczb¦

zespolon¡:

class fLiczbaZespolona {

private:

float Re,Im;

public:

// uzupeªni¢ we wªasnym

// zakresie ;-)

};

Zadeklarowa¢ i zdeniowa¢:

(a) konstruktor inicjalizuj¡cy (zastosowa¢ list¦ ini-

cjalizacyjn¡),

(b) konstruktor domniemany,

(c) metod¦ dodaj umo»liwiaj¡c¡ dodanie dwóch

liczb zespolonych,

(d) funkcj¦ operatorow¡ + wykonuj¡c¡ zadanie z

punktu (1c) w wersji globalnej oraz jako skªa-

dow¡ klasy,

(e) funkcj¦ operatorow¡ + wykonuj¡c¡ dodawa-

nie warto±ci rzeczywistej do liczby zespolo-

nej, tak aby mo»liwa byªa notacja przemien-

na (a dokªadniej: oat + fLiczbaZespolona oraz

fLiczbaZespolona + oat), zdeniowa¢ obiekty

i napisa¢ przykªadowe wywoªania funkcji.

2. Dany jest przykªad klasy:

class wizytowka {

public:

char *nazw; char *imie; char *tel;

};

Zadeklarowa¢ i zdeniowa¢:

(a) konstruktor inicjalizuj¡cy (domniemany),

(b) konstruktor kopiuj¡cy,

(c) operator przypisania = umo»liwiaj¡cy skopio-

wanie zawarto±ci obiektu,

(d) destruktor.

Zdeniowa¢ obiekty i napisa¢ przykªadowe wywoªa-

nia funkcji.

3. Dla nast¦puj¡cej struktury:

class Macierz2D {

static int pamiec;

int (*T)[n][m];

};

Zrealizowa¢ nast¦puj¡ce ¢wiczenia:

(a) zdeniowa¢ konstruktor domniemany,

(b) przeªadowa¢ operator - w wersji jednoargu-

mentowej oraz dwuargumentowej,

(c) przeªadowa¢ operator preinkrementacji oraz

postinkrementacji,

(d) przeªadowa¢ operatory new i delete, tak aby

prowadzi¢ statystyk¦ zu»ywanej pami¦ci.

4. Przeanalizowa¢ poni»szy fragment kodu

#include<iostream.h>

class samochod {

int filtr_powietrza;

public:

int akumulator, zbiornik_paliwa;

//...

};

samochod A,B;

int *wsk1;

int samochod::*wsk2=&samochod::akumulator;

void main() {

wsk1 = &(A.akumulator);

cout << *wsk1 << A.*wsk2;

wsk1 = &(B.akumulator);

cout << *wsk1 << B.*wsk2;

//...

}
Oceni¢ poprawno±¢ instrukcji:

(a) wsk1=&(B.zbiornik_paliwa);

(b) wsk1=&(B.filtr_powietrza);

(c) wsk2=samochod::filtr_powietrza;

(d) wsk2++;

(e) wsk1++;

5. Okre±li¢ poprawno±¢ nast¦puj¡cych deklaracji, po-

da¢ równie» przyczyny dla których s¡ poprawne b¡d¹

nie?

(a) f(int i,int j,int k=0); f(int i,int j);

(b) f(int i,char j); f(int j);

(c) f(const int k); f(int k);

(d) f(const int &k); f(int &k);

6. Okre±lony zostaª zal¡»ek nast¦puj¡cej klasy wektor

zdeniowana jako
class wektor{

int x,y,z;

public:

// ... pozostaªy interfejs

};

background image

Doda¢ implementacj¦ nast¦puj¡cych elementów:

(a) konstruktor domniemany,

(b) konstruktor inicjuj¡cy z list¡ inicjalizacyjn¡,

(c) skªadowe funkcje operatorowe +, , * umo»-

liwiaj¡ce dodawanie, odejmowanie i mno»enie

wektorów,

(d) funkcje z punktu (c) w wersji globalnej.

7. Dla klasy string:

class string {

int roz;

char *wsk;

public:

//...metody

};

Dokona¢ implementacji:

(a) nast¦puj¡cych konstruktorów: standardowy (z

list¡ inicjalizacyjn¡), domniemany i kopiuj¡cy,

(b) metody: zwracaj¡ce rozmiar ªa«cucha, skleja-

j¡ce dwa ªa«cuchy w jeden, odwracaj¡ce kolej-

no±¢ liter w ªa«cuchu i porównuj¡c¡ zawarto±¢

dwóch ªa«cuchów,

(c) destruktor,

(d) funkcje operatorowe ,  oraz =.

Czy poni»sze denicje konstruktorów s¡ poprawne?

Odpowied¹ uzasadni¢.

(a) string::string(char t[]) :

wsk(new char[roz+1]),

roz(strlen(t))

{

strcpy(wsk,t);

}

(b) string::string(string);

8. Niech b¦dzie dana klasa macierz zdeniowana nast¦-

puj¡co :

class macierz{

int liczba_wierszy, liczba_kolumn;

public:

float *tablica;

...

};

Zdeniowa¢:

(a) konstruktory inicjuj¡cy (domniemany) i kopiu-

j¡cy,

(b) skªadowe funkcje operatorowe +, -, *,

umo»liwiaj¡ce dodawanie, odejmowanie i mno-

»enie macierzy,

(c) funkcje +, -, * realizuj¡ce przemienne

dodawanie, odejmowanie i mno»enie macierzy

przez skalar,

(d) operator przypisania = umo»liwiaj¡cy skopio-

wanie macierzy,

(e) funkcj¦ skªadow¡ obliczaj¡c¡ wyznacznik ma-

cierzy kwadratowej,

(f) destruktor.

9. Stosuj¡c wska¹niki do skªadowych klasy posortowa¢

50 elementow¡ wygenerowan¡ losowo tablic¦ obiek-

tów z ¢wiczenia 2 wedªug zadanego pola (do porów-

nania ªa«cuchów znaków mo»na zastosowa¢ funkcj¦

strcmp z pakietu string.h).

10. Zaprojektowa¢ specjalny wska¹nik do warto±ci typu

caªkowitego, który b¦dzie zapami¦tywaª 10 ostatnio

wskazywanych przez niego adresów oraz 20 adresów

ostatnio utworzonych egzemplarzy takiego wska¹ni-

ka. Nast¦pnie przeªadowa¢ operatory inkrementacji

i dekrementacji dla tej klasy obiektów.


Wyszukiwarka

Podobne podstrony:
Lista4
Zadania-lista4, POLITECHNIKA WROCŁAWSKA (2009), Semestr II, Fizyka 2
lista4
Lista4AM2
lista4elektronika(1), Mechanika i Budowa Maszyn PWR MiBM, Semestr I, Fizyka
sw, lista4
Budownictwo lista4 2013
lista4 zu1
PE lista4
lista4
M1 lista4
logika lista4
Lab 13 14 15 16 Multimedia Klasa 4 2011 2012 Lista4, Informatyka, Technikum, Grafika
lista4 3
lista4 4
lista4, Zad1
lista4 9 id 270399 Nieznany
Lista4
AM lista4 zadania

więcej podobnych podstron