Лекция 1
.pdfАбстракция - Робот
Свойства
Назначение
Высота
Вес
Производитель
Абстракция - компьютер
Свойства
Тип
Производитель Размер экрана Год производства
Дата последнего обновления ОС
Графическое отображение абстракции
Идентификатор класса
-имя свойства
+операции()
Лампочка
-состояние
+Включить() +Выключить() +Проверить состояние()
Робот
-Назначение -Высота -Производитель -Вес
+Установить вес() +Установить производителя() +Установить высоту() +Установить назначение() +Узнать назначение() +Узнать высоту()
+Узнать вес()
+Узнать производителя()
Абстрагирование
Лампочка
-состояние
+Включить() +Выключить() +Проверить состояние()
Робот
-Назначение -Высота -Производитель -Вес
+Установить вес() +Установить производителя() +Установить высоту() +Установить назначение() +Узнать назначение() +Узнать высоту()
+Узнать вес()
+Узнать производителя()
Экземпляры
Лампочка : Лампочка
состояние : bool = включена
Лампочка2 : Лампочка
состояние : bool = выключена
: Робот
Назначение = Нюхач Высота = 1 м Производитель = Simence Вес = 15 кг
HRP-4C : Робот
Назначение = Фотомодель Высота = 158 см Производитель = AIST Вес = 43 кг
Виды абстракций
Два основных вида абстракций:
Тип данных объектов природы (класс)
Экземпляр класса (объект)
Класс
логическая абстракция
определяет новый тип данных,
включает как данные так и код функции
Инкапсуляция
Спецификаторы доступа
public (+)
private (-)
protected (#)
Форма записи класса
идентификатор нового типа
сlass имя_класса :список_наследования{
//Закрытые члены по умолчанию. protected:
//Закрытые члены, которые могут быть унаследованы.
public:
// Открытые члены.
} ;
Примеры классов
имя типа
class Lamp{ |
class Robot{ |
Робот
-Назначение -Высота -Производитель -Вес
+Установить вес() +Установить производителя() +Установить высоту() +Установить назначение() +Узнать назначение() +Узнать высоту()
+Узнать вес()
+Узнать производителя()
bool state; public:
void TurnOn(); void TurnOff(); bool IsTurned(); };
Лампочка
-состояние
+Включить() +Выключить() +Проверить состояние()
данные класса
методы
класса
char *nazn[20], prod[100]; int height;
float weight; public:
void setn(char *n); void setp(char *p); void seth(int h); void setw(float f); void showall();
};
Описание методов класса
тип имя_класса::имя_метода(аргументы)
{
// тело метода
}
class Lamp{ |
void Lamp::TurnOn() |
|
|
bool state; |
{state=true;} |
|
|
public: |
|
void TurnOn(); |
void Lamp::TurnOff() |
|
|
void TurnOff(); |
{state=false;} |
|
|
bool IsTurned(); |
|
}; |
bool Lamp::IsTurned() |
|
|
|
{return state;} |