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

Podobne dokumenty