background image

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 

background image

Program laboratorium przedstawia si

ę

 nast

ę

puj

ą

co:  

Lab

Instrukcja 

Temat Laboratorium 

Test 

Wst

ę

p. Uruchomienie prostej aplikacji terminalowej

 

 

Prosta aplikacja terminalowa. Formatowanie 
obiektowego wej

ś

cia i wyj

ś

cia 

Propozycje programów semestralnych 

Podstawy C,  
Wska

ź

niki i struktury 

 

Definicja prostej klasy (punkt, prostok

ą

t, zesp, itp). 

Obserwacja konstruktorów i destruktorów

 

 

Aplikacja dialogowa – budowa interfejsu u

ż

ytkownika 

+ przydział tematów semestralnych

 

Podstawy C++

 

Rozbudowa aplikacji dialogowej – programowanie 
obsługi wybranych kontrolek

 

 

Klasa z alokacj

ą

 pami

ę

ci – definiowanie 

konstruktorów, destruktora i operatora przypisania

 

Klasy i ich metody

 

Przeci

ąż

anie operatorów. Definiowanie klas 

pochodnych, dziedziczenie proste i wielobazowe

 

 

(kontynuacja 

ć

wiczenia 7)

 

Klasy pochodne, 
Diedziczenie, 
Polimorfizm

 

Funkcje wirtualne, klasy abstrakcyjne

 

 

10 

Aplikacja dialogowa

 

 

11 

Aplikacja SDI

 

Windows (zdarzenia, 
aplikacje dialogowe i SDI) 

 

12 

Aplikacja SDI (cd.)

 

 

13 

Program semestralny

 

UML, Wyj

ą

tki

 

14 

Program semestralny (c.d.)

 

 

15 

Program semestralny (c.d.) i wpisy

 

 

 
 
 
 
 
 
 
 
 
 
 

background image

Ć

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.  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

Ć

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

background image

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 

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: 

background image

 

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

 

 

 

 

 

 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

Ć

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.