Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемВиктор Сенаторов
1 Visual C++ Классы и объекты языка
2 Человек - примитивный Голова Туловище Руки Ноги Зрение Умение держать предмет в руках Могу ходить
3 Таким образом можно сказать, что примитивный человек состоит из неких частей и способов управлять ими. Части тела могут задаваться параметрами т.е. Некоторыми переменными! Размер головы=30 Дальнозоркость=200 Левая рука=занята Правая рука=занята Минимальная длинна передвижения=1 Скорость передвижения ног=5 Все это параметры человека
4 Добавив к параметрам их обработку получаем человека, который может выполнять примитивные функции: ходьба, обзор пространства, взятие предмета и т.д. Положения человека плоскости: x=5 y=3 Учитывая дальнозоркость можно определить область плоскости, которую человек видит и куда может пойти.
5 Опишем возможные параметры человека с помощью переменных Параметры человека: Позиция_x=3; Позиция_y=4; Движется=false; Сила_правой_руки=10; Сила_левой_руки=6; Правая_рука_занята=true; Левая_река_занята=true; Дальнозоркость=200; Быстрота_шага=5; Жизненная_сила=100; Интеллект=0; Одни только свойства и навыки не могут наделить нашего человека интеллектом, поскольку он должен научиться ими управлять.Управлять ими он будет с помощью функций! Функциональные возможности: Осмотреться(); Позиция_свободна(x,y); Передвинуться_на_позицию(x,y) Идти_вперед(); Идти_назад(); Идти_влево(); Идти_вправо(); Остановиться(); Проверить_заняты_ли_руки(); Взять_предмет(какой); Положить_предмет(какой); и т.д.
6 Рассмотрим, например, возможность идти вперед Boolean Идти_вперед(); { if (Жизненная_сила!=0) { if (Позиция_свободна(x,y)=true) { x=x+Быстрота_шага; return true; } else { Остановиться(); return false; } Таким образом, совмещение в одном объекте как свойств, так и действий над ними является базовым принципом объектно-ориентированного программирования (ООП) и называется... И н к а п с у л я ц и я
7 Кроме инкапсуляции существует еще две основополагающих концепции объектно ориентированного программирования Полиморфизм - свойство, которое позволяет одно и тоже имя использовать для решения двух или более схожих, но технически разных задач Наследование - это процесс, посредством которого один объект может приобретать свойства другого
8 Задание класса в языке С++ Класс объявляется с помощью ключевого слова class Объявление класса MAN не задает ни одного объекта типа MAN, оно определяет только тип объекта, который будет создан при его фактическом объявлении. Чтобы создать объект, необходимо использовать имя класса, как спецификатор типа данных. Например: MAN a,b; class имя_класса { закрытые функции и переменные класса public: открытые функции и переменные класса } список_объектов;
9 Пример простого объявления класса class test { int a; public: void set_a(int num) int get_a(); } void test::set_a(int num) { a=num; } int test:get_a() { return a; } void main() { test a; a.set_a(10); printf(%d,get_a()); } Два двоеточия называются оператором расширения области видимости Закрытые переменные и функции Открытые переменные и функции
10 Практически для каждого объекта требуется какого-то вида инициализация. Для этого в С++ имеется функция-конструктор. Конструктор класса вызывается каждый раз при создании объекта этого класса #include "stdafx.h" #include #define SIZE 10 // Объявление класса stack для символов class stack { char stck[SIZE]; // содержит стек int tos; // индекс вершины стека public: stack(); // конструктор void push(char ch); // помещает в стек символ char pop(); // выталкивает из стека символ }; // Инициализация стека stack::stack() { cout
11 #include "stdafx.h" #include "iostream.h" #include "cstring" #include "cstdlib" #define SIZE 255 class strtype { char *p; int len; public: strtype(); // конструктор ~strtype(); // деструктор void set(char *ptr); void show(); }; Функцией обратной конструктору является деструктор. Эта функция вызывается при удалении объекта т.к. часто с объектом должны выполняться некоторые действия при его удалении // Инициализация объекта строка strtype::strtype() { p=(char *) malloc(SIZE); if(!p) { cout
12 В следующем примере приведен интересный способ использования конструктора и деструктора. В программе объект класса timer предназначен для измерения временного интервала между его созданием и удалением. При вызове деструктора на экран выводится прошедшее с момента создания объекта время. #include "stdafx.h" #include "iostream.h" #include class timer { clock_t start; public: timer(); // конструктор ~timer(); // деструктор }; timer::timer() { start=clock(); } timer::~timer() { clock_t end; end=clock(); cout
13 Конструктору можно передавать параметры. Для этого добавьте необходимые параметры в объявление конструктора.Затем при объявлении объекта задайте параметры в качестве аргумента #include "stdafx.h" #include "iostream.h" class myclass { int a, b; public: myclass(int x, int y); // конструктор void show(); }; myclass::myclass(int x, int y) { cout
14 А теперь - задача….. ЖИЗНЬ На экране создается некоторая первичная колония существ, располагающихся на поле клеточек (размер можно брать произвольно). Существа могут как размножаться, так и умирать, подчиняясь при этом двум законам. Первый: если вокруг пустой клетки есть ровно три особи (считая по горизонтали, вертикали и диагонали), то в этой клетке появляется новая особь. В противном случае она умирает: одни организм - этого недостаточно, а 4,5 и более создают перенаселение До конца семестра!
15 Пока же можно попробовать с более простого... Запрограммировать три объекта, которые будут выполнять на игровом поле функции примитивных человечков. Два из которых будут стремиться найти друг-друга, но при этом избегать встречи с третьим. В случае если третий человечек «догонит» любого другого - тот останавливается. На игровом поле встречаются также различные препятствия, через которые ходить нельзя или ходить трудно. Такие, как камни, забор - через которые проходить нельзя и лужи, идя через которые человечек в два раза замедляет ход. Игровое поле - массив NxM Человек 1 - символ 1 Человек 2 - символ 2 Злой Человечек - Пустое поле - пробел Камень - символ * (звездочка) Забор - Символ ^ (возведение в степень) Лужа - Символ O
16 Задание дается на две пары... Удачи!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.