Egzamin Programowanie Obiektowe Głowacki.doc

(51 KB) Pobierz
1

1.     Co jest w digramie czynności w UML-u.

Diagramy struktury:
Klas (ang. class diagram)
Obiektów (object diagram)
Pakietów
Struktur połączonych
Wdrożeniowe (diagram abstrakcyjny)

Komponentów
Rozlokowania

Diagramy dynamiki:
Przypadków użycia (use case)
Aktywności (activity)
Maszyny stanowej (state)
Interakcji (diagram abstrakcyjny)

Sekwencji
Komunikacji
Harmonogramowania (lub Zależności czasowych)
Sterowania interakcją
 

2.     Jaki jest poprawny konstruktor kopiujący klasy student?

student::copy()-
Student student::copy()-
student(const Student &s) +
student student(const Student &s)-
 

3.     Która z odpowiedzi umożliwia konwersję:

+ Osoba(const student &o)// („student” może być zmieniony)
- void Osoba (const Osoba &o)
<reszta odpowiedzi była bez sensu>
(raczej) + śmieszne takie....
np. coś w stylu: A(const B& b);

obiekt A przyjmuje w konstruktorze obiekt B. I sam tworzy się na podstawie obiektu B
 

4.     do czego służy destruktor ?
- do zniszczenia obiektu
- do uwolnienia zaalokowanej pamięci
destruktor służy do posprzątania po sobie np zamknięcia otwieranych socketów, plików, zniszczenia własnych obiektów samo zwalnianie pamięci jest juz robione za destruktorem
 

5.     klasa pochodna dziedziczy private(public) po bazowej, jej składniki:

Wszystkie: private, public, protected
jak dziedziczysz private to wtedy zmieniasz widoczność zmiennych wszystkich na private. czyli jak B dziedziczy private A, i C dziedziczy z B, to C nie widzi zmiennych A
jakbyś dziedziczył public to nic się nie zmienia a protected to tylko public zmienia na protected dziedziczy wszystko tyle że ze zmienionym dostępem
 

6.     kiedy jest klasa abstrakcyjna (chyba)
jeśli ma choć jedną metodę czysto wirtualną np. virtual double read_value() =0;
 

7.     stworzenie dynamicznej tablicy klasy
klasa  *wsk = new klasa [liczba] +
klasa  *wsk = new tablica [liczba] -
klasa  *wsk = new klasa[] -
 


8.     dziedziczenie (bazowa -> pochodna/bazowa -> pochodna:
zwierze -> ssak -> koń +
sport -> gra -> koszykówka -
student -> osoba -> pracownik -
wypiek -> ciasto -> babka +
kura -> jajko -> jajecznica -
 

9.     kto ma dostęp do składników private klasy bazowej?
+ metody klasy bazowej
- metody klasy pochodnej
+ funkcje zaprzyjaźnione
- dostęp globalny
 

10. kto ma dostęp do składników protected klasy bazowej?
+ metody klasy bazowej
+ funkcje zaprzyjaźnione
- dostęp globalny
+ metody klasy pochodnej
 

11. jak jest wyłapywany wyjątek? (samemu)
try{funkcja którą może wywołać wyjątek}
catch(jaki wyjątek przechwytujemy)
{ pbsluga wyjątku}"
ważne jest także słówko "throw"(w bloku try{}) miałem odnośnie niego pytanie, tzn wpisałem je. A brzmiało jakoś tak "Dzięki czemu wyjątek może być złapany?"
 

12. jeśli klasa jest zadeklarowana ,czy pamięć jest zaalokowana?
prawda/fałsz
I tu nasuwa się pytanie czy w klasie znajdują się jakieś definicje obiektu? Gdy napiszemy samą klasę to pamięć nie jest jeszcze zarezerwowana. Natomiast gdy znajdą się tam definicje obiektu pamięć zostaje zaalokowana.
 

13. jak można zrobić konwersje z klasy pochodnej do bazowej?
operator konwertujący +
konstruktor .. + (na 90%)
 

14. dwuargumantowa funkcja operatorowa
możną zastąpić dwoma jednoargumentowymi - (90%)
argumenty można zamienić stronami -
może być nim operator-
 

15. .static (cos)
+ jest inicjalizowany globalnie
+ dla wszystkich obiektów danej klasy ma taka sama wartość
- nie można zmienić tej wartości
 

16. const (cos)
- jest inicjalizowany globalnie
- dla wszystkich obiektów danej klasy ma taka sama wartość
+ nie można zmienić tej wartości
              15 pytanie o static to tak. jest globalna zmienna. natomiast 16. const nie musi być static może być cosnt, może być static a może być const static samo const zabezpiecza tylko ze nie możesz zmienić wartości czyli tylko ostatnia jest prawidłowa
 


17. const static (cos)
+ jest inicjalizowany globalnie
+ dla wszystkich obiektów danej klasy ma taka sama wartość
+ nie można zmienić tej wartości
 

18. class A{
virtual f1() - cout A
f2()  - cout C   
}
class B : class A {
f1() cout B
f2() cout D
}
a &A
b &B
f1()->a
f2()->a
co zostanie zwrócone ??

„BC”
 

19. Jaka funkcja jest wywoływana podczas wystąpienia błędu? (pyt. otwarte)
odp: terminate()
 

20. Zadanie typu:
class A {
...
} // nie jestem pewien tej klamry
class B {
A obiekt  // czy coś w tym stylu
}
Pytanie: czy obiekt utworzony w klasie B będzie obiektem typu A?
Chodzi chyba o to czy tworząc obiekt typu A w klasie B, będzie on nadal obiektem typu A. Wtedy odpowiedź brzmi "tak".
 

21. Co wyświetli program
class A
{public:
virtual void f1() {cout << "A" ;}
};
class B: public A
{public:
void f1() {cout << "B";}
};
f(A a)
{a.f1()}
A a;
B b;
f(a);
f(b);
to chyba powinno być: f(A& a) zamiast f(A a)
wypisze „AB”!!
jest virtual i masz obiekty a i b i przekazujesz je do funkcji polimorficznej ona je obie widzi jako a ale jeden z tych a to jest b
 


22. . jakich operatorów nie można przeładować
+ .
+ ::   
,
- New
- delete
i jeszcze jakieś 2
odp.  :: i . 
 

23. jak nazywa się ukrywanie zmiennych w klasie
hermetyzacja +
+3 inne -
 

24. nie pamiętam jakie były możliwości ale odpowiedzi to:
public -> public
protected -> public
private -> brak dostępu z poziomy klasy pochodnej
(z tego co pamiętam to nie było takich opcji ; / )
to pewnie pytają o to do czego klasa pochodna ma dostęp w bazowej
to tak. ma do public i protected dostęp

 

25. Który diagram przypomina klasyczny algorytm? (Brałem pod uwagę tylko 3 odpowiedzi,a było 5)
-klas
+czynności
-stanów
 

26. Co można zobaczyć w diagramie czynności? (Chyba inaczej to brzmiało ale kminicie):
+związki
-agregacje
-przypadki użycia
<były jezscze 3, z czego 2 zaznaczyłem>
 

27. Która z odpowiedzi umożliwia konwersję:
+ Osoba(const Osoba &o)
- void Osoba (const Osoba &o)
<reszta odpowiedzi była bez sensu>
 

28. Chodziło o to że przy dziedziczeniu dopisujemy "private" i co się wtedy dzieje z prawami dostępu (banał :]):
+wszystkie -> private
+public -> private
<reszta była źle>

...
Zgłoś jeśli naruszono regulamin