Visual C++ Классы и объекты языка. Человек - примитивный Голова Туловище Руки Ноги Зрение Умение держать предмет в руках Могу ходить.

Презентация:



Advertisements
Похожие презентации
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Advertisements

Конструкторы и Деструкторы Конструкторы - функции, явно предназначенные для инициализации объектов Деструкторы - функция обратная конструктору для обеспечения.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Подбор материала и презентация: Сазонов Д.О. Кафедра ПМиЭММ ВГТА Динамические объекты, ссылки.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
Сравнение реализаций пользовательских типов переменных в языках высокого уровня. typedef struct tagStack{ double data; struct tagStack* prev; }*stack;
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Лекция 9. Введение в ООП. Часть 2 Красс Александр СПбГУ ИТМО, 2008.
Массивы и строки Лекция 5. Одномерные массивы. Объявление. Общая форма объявления: тип имя_переменной[размер]; Пример: double balance[100]; balance[3]
Семантический анализ КC-грамматики, с помощью которых описывают синтаксис языков программирования, не позволяют задавать контекстные условия (КУ), имеющиеся.
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Транксрипт:

Visual C++ Классы и объекты языка

Человек - примитивный Голова Туловище Руки Ноги Зрение Умение держать предмет в руках Могу ходить

Таким образом можно сказать, что примитивный человек состоит из неких частей и способов управлять ими. Части тела могут задаваться параметрами т.е. Некоторыми переменными! Размер головы=30 Дальнозоркость=200 Левая рука=занята Правая рука=занята Минимальная длинна передвижения=1 Скорость передвижения ног=5 Все это параметры человека

Добавив к параметрам их обработку получаем человека, который может выполнять примитивные функции: ходьба, обзор пространства, взятие предмета и т.д. Положения человека плоскости: x=5 y=3 Учитывая дальнозоркость можно определить область плоскости, которую человек видит и куда может пойти.

Опишем возможные параметры человека с помощью переменных Параметры человека: Позиция_x=3; Позиция_y=4; Движется=false; Сила_правой_руки=10; Сила_левой_руки=6; Правая_рука_занята=true; Левая_река_занята=true; Дальнозоркость=200; Быстрота_шага=5; Жизненная_сила=100; Интеллект=0; Одни только свойства и навыки не могут наделить нашего человека интеллектом, поскольку он должен научиться ими управлять.Управлять ими он будет с помощью функций! Функциональные возможности: Осмотреться(); Позиция_свободна(x,y); Передвинуться_на_позицию(x,y) Идти_вперед(); Идти_назад(); Идти_влево(); Идти_вправо(); Остановиться(); Проверить_заняты_ли_руки(); Взять_предмет(какой); Положить_предмет(какой); и т.д.

Рассмотрим, например, возможность идти вперед Boolean Идти_вперед(); { if (Жизненная_сила!=0) { if (Позиция_свободна(x,y)=true) { x=x+Быстрота_шага; return true; } else { Остановиться(); return false; } Таким образом, совмещение в одном объекте как свойств, так и действий над ними является базовым принципом объектно-ориентированного программирования (ООП) и называется... И н к а п с у л я ц и я

Кроме инкапсуляции существует еще две основополагающих концепции объектно ориентированного программирования Полиморфизм - свойство, которое позволяет одно и тоже имя использовать для решения двух или более схожих, но технически разных задач Наследование - это процесс, посредством которого один объект может приобретать свойства другого

Задание класса в языке С++ Класс объявляется с помощью ключевого слова class Объявление класса MAN не задает ни одного объекта типа MAN, оно определяет только тип объекта, который будет создан при его фактическом объявлении. Чтобы создать объект, необходимо использовать имя класса, как спецификатор типа данных. Например: MAN a,b; class имя_класса { закрытые функции и переменные класса public: открытые функции и переменные класса } список_объектов;

Пример простого объявления класса 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()); } Два двоеточия называются оператором расширения области видимости Закрытые переменные и функции Открытые переменные и функции

Практически для каждого объекта требуется какого-то вида инициализация. Для этого в С++ имеется функция-конструктор. Конструктор класса вызывается каждый раз при создании объекта этого класса #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

#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

В следующем примере приведен интересный способ использования конструктора и деструктора. В программе объект класса 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

Конструктору можно передавать параметры. Для этого добавьте необходимые параметры в объявление конструктора.Затем при объявлении объекта задайте параметры в качестве аргумента #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

А теперь - задача….. ЖИЗНЬ На экране создается некоторая первичная колония существ, располагающихся на поле клеточек (размер можно брать произвольно). Существа могут как размножаться, так и умирать, подчиняясь при этом двум законам. Первый: если вокруг пустой клетки есть ровно три особи (считая по горизонтали, вертикали и диагонали), то в этой клетке появляется новая особь. В противном случае она умирает: одни организм - этого недостаточно, а 4,5 и более создают перенаселение До конца семестра!

Пока же можно попробовать с более простого... Запрограммировать три объекта, которые будут выполнять на игровом поле функции примитивных человечков. Два из которых будут стремиться найти друг-друга, но при этом избегать встречи с третьим. В случае если третий человечек «догонит» любого другого - тот останавливается. На игровом поле встречаются также различные препятствия, через которые ходить нельзя или ходить трудно. Такие, как камни, забор - через которые проходить нельзя и лужи, идя через которые человечек в два раза замедляет ход. Игровое поле - массив NxM Человек 1 - символ 1 Человек 2 - символ 2 Злой Человечек - Пустое поле - пробел Камень - символ * (звездочка) Забор - Символ ^ (возведение в степень) Лужа - Символ O

Задание дается на две пары... Удачи!