Egzamin Programowanie Obiektowe Głowacki, Programowanie Obiektowe


  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ą

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

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

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

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

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

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

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

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

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

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

  4. 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?"

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

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

  7. dwuargumantowa funkcja operatorowa
    możną zastąpić dwoma jednoargumentowymi - (90%)
    argumenty można zamienić stronami -

    może być nim operator-

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

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

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

  2. 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”

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

  2. 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".

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

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

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

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

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

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

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

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



Wyszukiwarka