Programowanie obiektowe 3 MP-DI/F
Transkrypt
Programowanie obiektowe 3 MP-DI/F
Programowanie obiektowe 3 MP-DI/F Przykładowe zadania teoretyczne i praktyczne przygotowujące do egzaminu Uwagi ogólne: Zadania praktyczne należy umieć rozwiązać w następujących językach programowania: C++, Java, (C++ i Java – dwa różne rozwiązania). 1. Do wyznaczenia napięcia U na kondensatorze w stanie nieustalonym służy wzór: U = U0 · e-t/(R·C) Napisać program, który obliczy napięcie na kondensatorze dla podanych z klawiatury parametrów: t, R, C, U0. Po wczytaniu danych należy sprawdzić, czy dane wejściowe są poprawne (t, R, i C muszą być większe od zera). 2. Dany jest plik tekstowy lista.txt zawierający listę osób w formacie Imię Nazwisko. Napisać kod realizujący poniższe operacje: 1) Wyświetla nieparzyste wiersze tego pliku na ekranie. 2) Wypisze wiersz o największej długości. 3) Poda dane osoby, która ma najdłuższe imię. 4) Poda dane osoby, która ma najdłuższe nazwisko. 3. Uzupełnić kod przycisku Sprawdź, którego zadaniem jest wyświetlenie za pomocą odpowiedniego komunikatu, czy wartości podane w polach m_X, m_N i m_Y są rozwiązaniem nieoznaczonego równania kwadratowego znajdującego się obok rysunku. Wygląd okna aplikacji oraz nazwy i typy zmiennych dowiązanych do klasy okna przedstawiono na rysunku. x2 = N· y2 CEdit m_N CEdit m_X CEdit m_Y void CCakrawalDlg::OnBnClickedSprawdz() { ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… } 4. Uzupełnić poniższy kod realizujący obsługę przycisku Oblicz z rysunku do wyznaczenia wartości przeciwprostokątnej trójkąta. c = (a2+b2) JTextField tf_a JTextField tf_b JTextField tf_c Strona 1 z 4 private void Oblicz(java.awt.event.ActionEvent evt) { ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… } 5. Zaimplementować schemat dziedziczenia klas w języku C++ według poniższego diagramu klas UML. Pamiętając, że destruktory oraz metoda Rysuj powinny być wirtualne. 6. Zaimplementować schemat dziedziczenia klas w języku Java według poniższego diagramu klas UML. Pamiętając o odpowiednim oznaczeniu metod, które będą przeładowane. Strona 2 z 4 7. Napisać deklarację konstruktora klasy Postać z zadania 5 inicjując pola dotyczące pozycji X oraz Y wartościami 25.17 i -4.87 oraz imieniem Krzyś. W implementacji konstruktora należy również załadować animację z pliku Krzys.avi. 8. Zaimplementować konstruktor klasy Animacja z zadania 6, pamiętając o uprzednim wywołaniu konstruktora nadrzędnego. Podczas implementacji pól konstruktora ustawić wartości pól liczbaCykli i czasCyklu na -1. 9. Wątki 1 i 2, których kod przedstawiono poniżej, wypisują tekst do wspólnego pliku poprzez funkcję fprintf_. Uzupełnić poniższy kod (we właściwych miejscach) stosownymi obiektami i funkcjami synchronizacji MFC, aby niezależnie od kolejności ich uruchomienia otrzymać w pliku tekst 'ACBD'. ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… UINT Watek1(LPVOID par) { ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… fprintf_(_SHFILE, "B"); ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… fprintf_(_SHFILE, "D"); ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… return 0; } UINT Watek2(LPVOID par) { ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… fprintf_(_SHFILE, "A"); ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… fprintf_(_SHFILE, "C"); ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… return 0; } 10. Zabezpieczyć kod metody/klasy oneObjPerThr tak, aby tylko jeden wątek mógł wykonywać jej kod w danym momencie na tym obiekcie. Zabezpieczyć kod metody/klasy totalOneThr tak, aby tylko jeden wątek mógł wykonywać jej kod w danym momencie na dowolnym obiekcie. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… public class SomeClass { ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… public void ……………………………… oneObjPerThr() { …………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… System.out.println("Tylko jeden wątek w obiekcie"); ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… } ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… public void ……………………………… totalOneThr() { …………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… System.out.println("Tylko jeden wątek w metodzie"); ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… } } Strona 3 z 4 11. Wyjaśnić następujące pojęcia: — — — — — — — — — — — — — — obiekt, klasa, dziedziczenie, hermetyzacja, model V, konstruktor, destruktor, metoda wirtualna, metoda abstrakcyjna, klasa abstrakcyjna, przeciążanie operatorów, system operacyjny, wątek, interfejs (w języku Java), aplet, midlet, servlet (w języku Java). — — — — — — — Wymienić nazwy trzech języków programowania w których można stosować paradygmat obiektowy, Scharakteryzować wybrany wzorzec projektowy, Wymienić nazwy używanych środowisk programistycznych (IDE) do języków obiektowych, Wymienić i scharakteryzować dwa obiekty synchronizacji, Określić różnice pomiędzy elementami statycznymi a instancyjnymi, Wyjaśnić do czego wykorzystuje się systemy kontroli wersji, Wyjaśnić korzyści ze stosowania testów jednostkowych. 12. Różne (krótkie odpowiedzi składające się z maksymalnie trzech zdań): Strona 4 z 4