Jerzy Kisielewicz
Jakub Gładysz
Karol Puchała
Instrukcja nr 3 do Laboratorium
z Programowania Obiektowego
Zaj
ę
cia 10-12 Tydzie
ń
INEW002L
Semestr 2
Kierunek:
Informatyka (INF)
Teleinformatyka (TIN)
Studium Kształcenia Podstawowego (SKP)
Wrocław 2009
Program laboratorium przedstawia si
ę
nast
ę
puj
ą
co:
Lab
.
Instrukcja
Temat Laboratorium
Test
1
1
Wst
ę
p. Uruchomienie prostej aplikacji terminalowej
2
1
Prosta aplikacja terminalowa. Formatowanie
obiektowego wej
ś
cia i wyj
ś
cia
Propozycje programów semestralnych
Podstawy C,
Wska
ź
niki i struktury
3
1
Definicja prostej klasy (punkt, prostok
ą
t, zesp, itp).
Obserwacja konstruktorów i destruktorów
4
1
Aplikacja dialogowa – budowa interfejsu u
ż
ytkownika
+ przydział tematów semestralnych
Podstawy C++
5
1
Rozbudowa aplikacji dialogowej – programowanie
obsługi wybranych kontrolek
6
2
Klasa z alokacj
ą
pami
ę
ci – definiowanie
konstruktorów, destruktora i operatora przypisania
Klasy i ich metody
7
2
Przeci
ąż
anie operatorów. Definiowanie klas
pochodnych, dziedziczenie proste i wielobazowe
8
2
(kontynuacja
ć
wiczenia 7)
Klasy pochodne,
Diedziczenie,
Polimorfizm
9
2
Funkcje wirtualne, klasy abstrakcyjne
10
3
Aplikacja dialogowa
11
3
Aplikacja SDI
Windows (zdarzenia,
aplikacje dialogowe i SDI)
12
3
Aplikacja SDI (cd.)
13
4
Program semestralny
UML, Wyj
ą
tki
14
4
Program semestralny (c.d.)
15
4
Program semestralny (c.d.) i wpisy
Ć
wiczenie 10 Aplikacja Dialogowa
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
):
Zadanie 1
Stwórz now
ą
aplikacj
ę
MFC i skonstruuj okno dialogowe realizuj
ą
ce nast
ę
puj
ą
ce
czynno
ś
ci:
Stwórz pola umo
ż
liwiaj
ą
ce podanie czterech par liczb (a,b). Nast
ę
pnie dla dwóch
pierwszych oraz dwóch ostatnich punktów znajd
ź
wzór na prost
ą
przechodz
ą
c
ą
przez te punkty oraz wy
ś
wietl otrzymane równania prostych. Oprócz tego
u
ż
ytkownik powinien mie
ć
mo
ż
liwo
ść
podania bezpo
ś
rednio wzoru na proste.
Nast
ę
pnie nale
ż
y umo
ż
liwi
ć
u
ż
ytkownikowi opcj
ę
narysowania prostych (albo
danych równaniem, albo obliczonych z punktów) w układzie współrz
ę
dnych oraz
znalezienia i zaznaczenia punktu przeci
ę
cia (je
ż
eli istnieje). Zakres punktów na
osi X oraz Y powinien by
ć
liczb
ą
z zakresu 1-15 i powinien by
ć
podawany przez
u
ż
ytkownika.
Ć
wiczenie 11 Aplikacja SDI
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
):
Zadanie 1
Utwórz aplikacj
ę
SDI. W tym celu nale
ż
y:
1. Wybra
ć
z menu File|New|Projects.
a. Wybra
ć
lokalizacj
ę
, czyli katalog, w którym automatycznie powstanie
podkatalog (przestrze
ń
robocza tworzonego programu -> ang
location). W przestrzeni roboczej b
ę
d
ą
umieszczone pliki tworzonego
programu.
b. Wpisa
ć
nazw
ę
projektu (b
ę
dzie to nazwa podkatalogu i równocze
ś
nie
programu) -> name.
c. Z listy projektów wybra
ć
: VisualC++|MFC|MFC Application. i nacisn
ąć
„OK”.
2. Nacisn
ąć
„Next”. Wybra
ć
typ aplikacji „Single document” i sprawdzi
ć
zaznaczenie opcji „Document/View architecture support”.
3. Wybra
ć
„MFC Standard oraz zaznaczy
ć
„Use MFC in a shared DLL” i
nacisn
ąć
klawisz „Next”.
4. “Compound Document Support” wybra
ć
“None” i nacisn
ąć
klawisz „Next”.
5. Nacisn
ąć
klawisz „Next”.
6. “Database Support”
wybra
ć
“None” i nacisn
ąć
klawisz „Next”.
7. Zaznaczy
ć
„Standard
Docking Toolbar”, „Initial Status Bar”, “Thick frame„,
“Minimize box”, “Maximize box”, “System menu”. oraz nie zaznaczy
ć
Toolbar: Browser style”„Normal” i nacisn
ąć
klawisz „Next”.
8. Zaznaczy
ć
Printing and Print Preview”, „ActiveX Controls”, “Common Control
Manifest”
i nacisn
ąć
klawisz „Next”.
9. Nacisn
ąć
klawisz „Finish”.
10. Skompilowa
ć
i uruchomi
ć
wybran
ą
aplikacj
ę
. Sprawdzi
ć
co w tej aplikacji
funkcjonuje.
Uruchomi
ć
program, który w zale
ż
no
ś
ci od wyboru pozycji w menu: doda, odejmie,
pomno
ż
y lub podzieli dwie liczby. W tym celu nale
ż
y:
doda
ć
nowy dialog i utworzy
ć
dla niego klas
ę
,
wstawi
ć
do tego dialogu teksty statyczne i kontrolki „Edit Control”, dla których
zdefiniowa
ć
zmienne typu double oraz usun
ąć
klawisz „Cancel”,
dla ka
ż
dej kontrolki „Edit Control”, zdefiniowa
ć
funkcj
ę
obsługi zdarzenia
EN_CHANGE, która polega tylko na wywołaniu funkcji UpdateData();,
w klasie CMainFrame zdefiniowa
ć
zmienn
ą
m_CD1 klasy utworzonego okna
dialogowego (aby obiekt dialogowy istniał razem z aplikacj
ą
),
utworzy
ć
w menu pozycj
ę
„Obliczenia”, a w jej rozwini
ę
ciu pozycje:
„Dane”,.„Dodaj”,.„Odejmij”.„Pomnó
ż
”.„Podziel”,
dla
ka
ż
dej
z
ww.
pozycji
(w
rozwini
ę
ciu)
za
pomoc
ą
okna
„Add Event Handler Wizard” zdefiniuj funkcj
ę
obsługi zdarzenia „COMMAND”
(dla edycji danych b
ę
dzie to jedna instrukcja m_CD1.DoModal();, a dla np.
dodawania nale
ż
y do zmiennej z kontrolki wyniku wpisa
ć
sum
ę
zmiennych z
kontrolek
danych,
wywoła
ć
UpdateData(FALSE);
a nast
ę
pnie
m_CD1.DoModal();),
aby uniemo
ż
liwi
ć
wykonywanie dzielenia przez zero, aktywuj i dezaktywuj t
ę
pozycj
ę
menu (w tym celu dla pozycji „Podziel” w menu za pomoc
ą
„MFC
Class Wizard” dodaj funkcj
ę
obsługi zdarzenia „UPDATE_COMMAND_UI”, w
której do pozycji menu wywołaj funkcj
ę
Enable(TRUE) lub Enable(FALSE) w
zale
ż
no
ś
ci, czy dzielnik jest ró
ż
ny od zera! np. za pomoc
ą
instrukcji pCmdUI-
>Enable(m_CD1.m_B!=0);, gdzie pCmdUI jest argumentem tworzonej funkcji).
Zadanie 2
Utwórz aplikacj
ę
SDI jak w poprzednim
ć
wiczeniu. W poleceniu „Open” w menu
„File” za pomoc
ą
„MFC Class Wizard” dodaj funkcj
ę
obsługi zdarzenia
„COMMAND” o zawarto
ś
ci:
CFileDialog x(TRUE);
x.DoModal();
MessageBox("Zapisuje plik "+x.GetPathName());
Przetestuj działanie programu.
Uruchom aplikacj
ę
SDI u
ż
ywaj
ą
c
ą
pliki w sposób standardowy u
ż
ywaj
ą
c obiektów
klas ifstream, ofstream lub fstream. Przykładowy program powinien wczytywa
ć
tekst (lub dane) z pliku i wy
ś
wietla
ć
go w kontrolce edycyjnej (Edit Box). W tym
celu mo
ż
na wykorzysta
ć
polecenia menu „Open” oraz „Edit”. Powinna by
ć
mo
ż
liwo
ść
wprowadzania nowego tekstu do kontrolki edycyjnej. Powinna by
ć
mo
ż
liwo
ść
zapisania tekstu zawartego w kontrolce edycyjnej do pliku o wybranej
lub wpisanej nazwie. W tym celu trzeba jednak usun
ąć
z menu polecenia „Save”
oraz „Save as” i na ich miejsce wprowadzi
ć
inne np. „Zapisz” i „Zapisz jako”.
Ć
wiczenie 12 Aplikacja SDI c.d.
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
):
Zadanie 1
Napisz aplikacj
ę
SDI umo
ż
liwiaj
ą
c
ą
wczytanie adresu oraz maski podsieci. Adres
oraz maska składa si
ę
z 4 pól, w których mo
ż
liwe jest podanie warto
ś
ci z zakresu
<0-255>.
Nast
ę
pnie w zale
ż
no
ś
ci od wyboru pozycji w menu operuj
ą
c na danych:
1) Wy
ś
wietl adres oraz mask
ę
podsieci w postaci binarnej,
2) Zapisz adres z mask
ą
w notacji CIDR,
3) Oblicz adres rozgłoszeniowy dla tej podsieci,
4) Oblicz adres bramy dla tej sieci (zakłada si
ę
ostatni wolny adres dla hosta),
5) Znajd
ź
adres pierwszego mo
ż
liwego do zaadresowania hosta.
Przykładowe obliczenia dla adresu: 192.168.1.128 oraz maski 255.255.255.224
znajduj
ą
si
ę
poni
ż
ej:
1) Adres: 11000000.10101000.00000001.10000000
Maska: 11111111.11111111.11111111.11100000
2) 192.168.1.128/27
3) 192.168.1.159
4) 192.168.1.158
5) 192.168.1.129
*) W prostszej wersji programu mo
ż
na przyj
ąć
i
ż
pierwsze 3 oktety w adresie
maski podsieci wynosz
ą
po 255, a u
ż
ytkownik wprowadza jedynie 4-ty oktet.