- •Факультет прикладной математики и физики
- •Лабораторные работы 1 — 8 по курсу сппо:
- •1.Агрегация по ссылке (lab1.Cpp, lab1.Exe______________)
- •2.Агрегация по значению и вложением (lab1_vlog.Cpp,lab1_znach.Cpp,*.Exe)
- •1.Агрегация по ссылке
- •2.Агрегация по значению
- •2.Агрегация вложением
- •Void md() {
- •Void mf() {
- •Void me() {
- •3.Принцип подстановки
- •Int main()
- •4.1 Наследование: расширение, спецификация, специализация, конструирование(граф изменён)
- •4.2 Наследование: комбинирование(граф изменём)
- •5. Наследование: комбинирование через общих предков
- •Int main()
- •6.1 Ассоциация 1:1
- •Int main()
- •6.2 Ассоциация 1:n
- •7.1 Использование: клиент-сервер
- •7.2 Использование: общность
- •8.1 Конкретизация функции
- •8.2 Конкретизация класса
2.Агрегация по значению
A
public
private
protected
R has-a
R has-a
C
public
B
public
private
private
protected
protected
R has-a
R has-a
R has-a
// lab1_znach.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include "conio.h"
#include <iostream>
using namespace std;
class A{
public:
class B{
public:
class D{
public:
D() {d = 0;}
int d;
void md() {
d += 1;
cout << "d = " << d << endl;
}
};
B() {}
D* mbd() {return &d;}
private:
D d;
};
class C{
public:
class F{
public:
F() {f = 0;}
int f;
void mf() {
f += 1;
cout << "f = " << f << endl;
}
};
class E{
public:
E() {e = 0;}
int e;
void me() {
e += 1;
cout << "e = " << e << endl;
}
};
C() {}
F* mcf() {return &f;}
E* mce() {return &e;}
private:
F f;
E e;
};
A() {}
B* mab() {return &b;}
C* mac() {return &c;}
private:
B b;
C c;
};
int main() {
A a;
a.mac()->mcf()->mf();
a.mac()->mce()->me();
a.mab()->mbd()->md();
_getche();
return 0;
}
2.Агрегация вложением
A
public
private
protected
B
public
private
protected
C
public
private
protected
// lab1_vlog.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include "conio.h"
#include <iostream>
using namespace std;
class A {
public:
class B {
public:
class D {
public:
D() {d = 0;}
int d;
Void md() {
d += 1;
cout << "d = " << d << endl;
}
};
B() {}
D* mbd() {return &d;}
private:
D d;
};
class C {
public:
class F {
public:
F() {f = 0;}
int f;
Void mf() {
f += 1;
cout << "f = " << f << endl;
}
};
class E {
public:
E() {e = 0;}
int e;
Void me() {
e += 1;
cout << "e = " << e << endl;
}
};
C() {}
F* mcf() {return &f;}
E* mce() {return &e;}
private:
F f;
E e;
};
A() {}
B* mab() {return &b;}
C* mac() {return &c;}
private:
B b;
C c;
};
int main(int argc, char* argv[])
{
setlocale (LC_ALL,"Russian");
cout << "агрегация вложением\n";
A a;
a.mac()->mcf()->mf();
a.mac()->mce()->me();
a.mab()->mbd()->md();
_getche();
return 0;
}
