Лекция 1
.pdfОбъект
переменная класса
обладает
состоянием,
поведением
идентичностью.
Объявление объекта
Объявление объекта:
Имя_класса имя_объекта;
имя объекта : Имя класса
Lamp l1,l2; Robot r1, r2;
Computer comp[15];
Создание объекта
l1 : Lamp
state : bool
r1 : Robot
nazn : char prod : char height : int weight : float
l2 : Lamp
state : bool
r2 : Robot
nazn : char prod : char height : int weight : float
|
|
|
|
|
|
|
|
|
|
|
|
r[0] : Robot |
r[1] : Robot |
r[2] : Robot |
|
|
|
|
|
|
|
nazn : char |
nazn : char |
nazn : char |
|
|
prod : char |
prod : char |
prod : char |
|
|
height : int |
height : int |
height : int |
|
|
weight : float |
weight : float |
weight : float |
|
|
|
|
|
Работа с объектами
имя_объекта.Имя_метода(); указатель_на_объект->Имя_Метода(); имя_объекта.свойство=значение();
Работа с объектами
int main(){ Lamp l1,l2; l1.state=true; l2.state=true; return 0;
}
Lamp
-state : bool
+urnOn() : void +TurnOff() : void +IsTurned() : bool
int main(){ Lamp l1,l2; l1.TurnOn(); if(l1.IsTurned()){ l2.TurnOn(); l1.TurnOff();
}
return 0;
}
Конструктор
вызывается при первоначальном создании объекта класса
имя совпадает с именем класса
не имеет возвращаемого значения
Пример1. Конструкторы
#include <iostream> using namespace std; class MyClass{
int i,j; public:
MyClass (){i=j=0;}
void Init(int a, int b){i=a; j=b;} void Show();
};
void MyClass::Show()
{
cout<<"i="<<i<<"j="<<j<<'\
n';
}
int main(])
{
MyClass a; a.Init(10,20); a.Show();
return 0;
}
a : MyClass
i : int = 0 j : int = 0
a : MyClass
i : int = 10 j : int = 20
Пример1. Конструкторы
#include <iostream>
using namespace std; class MyClass{
int i,j; public:
MyClass(){i=j=0;}
void Init(int a, int b){i=a; j=b;}
void Show() {cout<<"i="<<i<<"j="<<j <<'\n';}
};
|
arr[0] : MyClass |
ar[1] : MyClass |
arr[2] : MyClass |
|
|
|
|
|
|
int main() |
i : int = 0 |
i : int = 0 |
i : int = 0 |
|
j : int = 0 |
j : int = 0 |
j : int = 0 |
||
|
||||
|
|
|
|
{ MyClass arr[3]; int i;
for (i=0;i<3;i++) arr[i].Init(i+1, i*10);
for (i=0;i<3;i++) arr[i].Show(); cin.get();
return 0;
}
Свойства конструкторов
Конструктор можно перегружать
Конструктор может иметь параметры.
имя_класса имя_объекта(список аргументов);
MyClass::MyClass(int a, int b){ i=a; j=b;
}
MyClass::MyClass(int a){ i=j=a;}
MyClass::MyClass(){
i=j=0;}
Конструкторы с параметрами
#include <iostream> using namespace std; class MyClass{
int i,j; public:
MyClass(){i=j=0;}
MyClass(int a, int b){i=a;j=b;} void Init(int a, int b){i=a; j=b;} void Show();};
void MyClass::Show() {cout<<"i="<<i<<" j="<<j<<'\n';}
|
|
obj1 : MyClass |
|
obj2 : MyClass |
|
|
|
|
|
int main() |
i : int = 0 |
|
i : int = 3 |
|
|
|
|
||
{ |
|
j : int = 0 |
|
j : int = 4 |
|
|
|
|
|
|
|
|
MyClass obj1, obj2(3,4), obj3(5,6);
cout<<"Start value\n"; cout<<"obj1 - "; obj1.Show(); cout<<"obj2 - "; obj2.Show(); cout<<"obj3 - "; obj3.Show(); cout<<"Init obj1\n";
obj1.Init(10,20); cout<<"obj1 - "; obj1.Show();
obj3=obj2; cout<<"obj3=obj2\n"; cout<<"obj3 - "; obj3.Show();
return 0;
}
obj1 : MyClass
i : int = 10 j : int = 20
obj3 : MyClass
i : int = 3 j : int = 4
obj3 : MyClass
i : int = 5 j : int = 6