Przykład prezentuje podstawowy programowania obiektowo
zorientowanego w języku C++. Całośc można skompilować w
środowisku Visula C++ f-my Microsoft bez zmian (po utworzeniu
projektu konsolowego)
Kod programu:
#include
"stdafx.h"
using
namespace
std;
class
Data
{
short
dzien;
short
miesiac;
int
rok;
public
:
Data(
short
Dzien
= 1,
short
Miesiac
= 1,
int
Rok
= 1900):
dzien(
Dzien
), miesiac(
Miesiac
), rok(
Rok
){}
void
wypiszDate()
{
if
(rok > 1900) cout << rok <<
"-"
<< miesiac <<
"-"
<< dzien;
else
cout <<
"xxxx-xx-xx"
;}
};
class
Osoba
{
static
int
liczOsob;
int
osID;
string
imie;
string
nazwisko;
string
zawod;
Data
dataUrodz;
public
:
Osoba(){imie =
""
, nazwisko =
""
, zawod =
""
, dataUrodz =
Data
();}
Osoba(
string
Imie
,
string
Nazwisko
,
string
Zawod
,
Data
DataUrodz
=
Data
()): osID(++liczOsob), imie(
Imie
), nazwisko(
Nazwisko
),
zawod(
Zawod
), dataUrodz(
DataUrodz
){}
void
osobID(
int
nr
){osID =
nr
;}
void
przedstawSie()
{cout <<
" ("
<< osID <<
") "
<< imie <<
" "
<< nazwisko
<<
" - zawod: "
<< zawod << endl;}
void
urodzony()
{cout <<
" urodzony: "
; dataUrodz.wypiszDate();
cout << endl;}
};
int
Osoba
::liczOsob;
class
Osada
{
static
int
liczOsad;
int
liczMieszk;
Osoba
*Mieszkancy;
public
:
Osada(){liczMieszk = 0;}
void
dodajMieszk(
Osoba
);
void
spisMieszk();
~Osada(){
delete
[] Mieszkancy;}
};
int
Osada
::liczOsad;
void
Osada
::dodajMieszk(
Osoba
Nowy
){
Osoba
*Temp =
new
Osoba
[liczMieszk + 1];
if
(liczMieszk > 0) {
for
(
int
i=0; i < liczMieszk; i++) Temp[i] = Mieszkancy[i];
delete
[] Mieszkancy;
}
Temp[liczMieszk++] =
Nowy
;
Mieszkancy = Temp;
}
void
Osada
::spisMieszk(){
cout <<
"W Osadzie mieszka "
<< liczMieszk <<
" osob:"
<< endl << endl;
for
(
int
i = 0; i < liczMieszk; i++){
cout << i + 1 <<
". "
;
Mieszkancy[i].przedstawSie();
Mieszkancy[i].urodzony();
}
cout << endl;
}
int
main(
array
<System::
String
^> ^
args
)
{
Osada
LesnyDwor;
LesnyDwor.dodajMieszk(
Osoba
(
"Jan"
,
"Kowalski"
,
"Informatyk"
,
Data
(20,5,1980)));
LesnyDwor.dodajMieszk(
Osoba
(
"Andrzej"
,
"Nowak"
,
"Fizyk"
,
Data
(30,12,1985)));
LesnyDwor.dodajMieszk(
Osoba
(
"Karol"
,
"Malinowski"
,
"Informatyk"
,
Data
(3,6,1977)));
LesnyDwor.dodajMieszk(
Osoba
(
"Anna"
,
"Kowalska"
,
"Biolog"
,
Data
(18,7,1989)));
LesnyDwor.dodajMieszk(
Osoba
(
"Lukasz"
,
"But"
,
"Szewc"
));
LesnyDwor.dodajMieszk(
Osoba
(
"Archimedes"
,
"Liczydlo"
,
"Matematyk"
,
Data
(20,9,1966)));
LesnyDwor.spisMieszk();
system(
"pause"
);
return
0;
}
Plik nagłówkowy stdafx.h wymagany jako uzupełnienie
zaprezentowanego kodu powinien mieć postać zbliżoną do
następującej:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma
once
// TODO: reference additional headers your program requires here
#include
<iostream>
#include
<string>
Wynik działania programu:
W Osadzie mieszka 6 osob:
1. (1) Jan Kowalski - zawod: Informatyk
urodzony: 1980-5-20
2. (2) Andrzej Nowak - zawod: Fizyk
urodzony: 1985-12-30
3. (3) Karol Malinowski - zawod: Informatyk
urodzony: 1977-6-3
4. (4) Anna Kowalska - zawod: Biolog
urodzony: 1989-7-18
5. (5) Lukasz But - zawod: Szewc
urodzony: xxxx-xx-xx
6. (6) Archimedes Liczydlo - zawod: Matematyk
urodzony: 1966-9-20
Aby kontynuować, naciśnij dowolny klawisz . . .