СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Презентация на тему "Объектно-ориентированное программирование: создание массива объектов"

Категория: Информатика

Нажмите, чтобы узнать подробности

Данная презентация содержит теоретические основы описания класса, примеры создания класса, объектов класса, работу с массивом объектов. В конце презентации есть задание на самостоятельную работу студента.

Просмотр содержимого документа
«Презентация на тему "Объектно-ориентированное программирование: создание массива объектов"»

Классы и объекты Класс – это разновидность абстрактного типа данных в ООП. Объект – это некоторая сущность в виртуальном пространстве, обладающая определенным состоянием и поведением, имеющая заданные значения свойств ( атрибутов ) и операций над ними ( методов ). Объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины “ экземпляр класса ” и “объект” взаимозаменяемы. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма. Событие – это то, что может случиться с объектом при определенных условиях (например, с кнопкой при клике на нее мышкой), событие может вызывать один или несколько методов.

Классы и объекты

Класс – это разновидность абстрактного типа данных в ООП.

Объект – это некоторая сущность в виртуальном пространстве, обладающая определенным состоянием и поведением, имеющая заданные значения свойств ( атрибутов ) и операций над ними ( методов ). Объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины “ экземпляр класса ” и “объект” взаимозаменяемы. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма. Событие – это то, что может случиться с объектом при определенных условиях (например, с кнопкой при клике на нее мышкой), событие может вызывать один или несколько методов.

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

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

Например, класс, описывающий объект, который содержит имя, фамилию человека и номер его кредитки , может быть создан следующим образом: // Класс Dannye class Dannye { public: char firstname [128]; char lastname [128]; int card; }; // d - экземпляр класса Dannye: Dannye d; После открывающей скобки идет модификатор доступа public – все функции и переменные, которые находятся после него, становятся доступными из всех частей программы. После ключевого слова public идет описание полей класса. Класс Dannye содержит поля имени, фамилии и номера кредитки. Затем объявлена переменная d , которая имеет тип  Dannye . Таким образом, d представляет собой запись, описывающую отдельного человека. d – это экземпляр класса Dannye . Мы создали этот объект, реализовав класс Dannye . Поля firstname , lastname и card – это члены класса или свойства класса . Объявление класса начинается с ключевого слова class , после которого идет имя класса и пара фигурных скобок, открывающих и закрывающих тело класса.

Например, класс, описывающий объект, который содержит имя, фамилию человека и номер его кредитки , может быть создан следующим образом:

// Класс Dannye

class Dannye

{

public:

char firstname [128];

char lastname [128];

int card;

};

// d - экземпляр класса Dannye:

Dannye d;

После открывающей скобки идет модификатор доступа public – все функции и переменные, которые находятся после него, становятся доступными из всех частей программы.

После ключевого слова public идет описание полей класса. Класс Dannye содержит поля имени, фамилии и номера кредитки.

Затем объявлена переменная d , которая имеет тип Dannye . Таким образом, d представляет собой запись, описывающую отдельного человека.

d – это экземпляр класса Dannye . Мы создали этот объект, реализовав класс Dannye . Поля firstname , lastname и card – это члены класса или свойства класса .

Объявление класса начинается с ключевого слова class , после которого идет имя класса и пара фигурных скобок, открывающих и закрывающих тело класса.

d.firstname; cin d.lastname; Здесь d – экземпляр класса Dannye (т.е. отдельный объект типа Dannye ); целочисленная переменная d.card – свойство объекта d . В этом фрагменте программы происходит объявление объекта d , который затем может быть использован для описания покупателя. Программа присваивает номер кредитки, а затем считывает имя и фамилию из стандартного ввода. Для хранения имени используется массив символов вместо типа string . Теперь программа может работать с объектом типа d как с единым целым, не обращаясь к его отдельным частям, пока в этом не возникнет необходимость: " width="640"

Обратиться к членам созданного класса можно так:

Dannye d;

d.card = 123;

cin d.firstname;

cin d.lastname;

Здесь d – экземпляр класса Dannye (т.е. отдельный объект типа Dannye ); целочисленная переменная d.card – свойство объекта d .

В этом фрагменте программы происходит объявление объекта d , который затем может быть использован для описания покупателя. Программа присваивает номер кредитки, а затем считывает имя и фамилию из стандартного ввода. Для хранения имени используется массив символов вместо типа string .

Теперь программа может работать с объектом типа d как с единым целым, не обращаясь к его отдельным частям, пока в этом не возникнет необходимость:

Еще один способ создания объектов:

Еще один способ создания объектов:

Итак, классы используются для объединения взаимосвязанных данных в один объект. Приведенный ниже класс Savings (англ. – сбережения) объединяет в себе баланс и уникальный номер счета: class Savings { public: unsigned accountNumber; float balance; }; Каждый экземпляр класса Savings содержит одинаковые элементы: int main () { Savings a; Savings b; a.accountNumber = 1; // это один счет b.accountNumber = 2; // а это другой счет } Переменная a.accountNumber отличается от переменной b.accountNumber так же, как баланс банковского счета Иванова отличается от баланса банковского счета Петрова, хотя они оба называются балансами.

Итак, классы используются для объединения взаимосвязанных данных в один объект. Приведенный ниже класс Savings (англ. – сбережения) объединяет в себе баланс и уникальный номер счета:

class Savings

{

public:

unsigned accountNumber;

float balance;

};

Каждый экземпляр класса Savings содержит одинаковые элементы:

int main ()

{

Savings a;

Savings b;

a.accountNumber = 1; // это один счет

b.accountNumber = 2; // а это другой счет

}

Переменная a.accountNumber отличается от переменной b.accountNumber так же, как баланс банковского счета Иванова отличается от баланса банковского счета Петрова, хотя они оба называются балансами.

Чтобы обеспечить ввод/вывод данных для нескольких объектов и избежать при этом дублирования кода, лучше создать отдельную функцию для ввода/вывода данных.

Чтобы обеспечить ввод/вывод данных для нескольких объектов и избежать при этом дублирования кода, лучше создать отдельную функцию для ввода/вывода данных.

Задача 1. Описать класс Family . Свойства: имя, роль, возраст. Создать 3 объекта и 1 внешнюю функцию, которая принимает данные. Вывести на экран средний возраст.

Задача 1. Описать класс Family . Свойства: имя, роль, возраст. Создать 3 объекта и 1 внешнюю функцию, которая принимает данные. Вывести на экран средний возраст.

Массив объектов Результат работы программы:

Массив объектов

Результат работы программы:

_stricmp – сравнивает две строки без учета регистра символов, возвращает 0, если строки равны. Описание программы:

_stricmp – сравнивает две строки без учета регистра символов, возвращает 0, если строки равны.

Описание программы:

В функции main() создается массив из 25 объектов класса Dannye , после чего программа приглашает пользователя ввести информацию. Затем в теле цикла while происходит вызов функции getData() , которая ожидает ввода с клавиатуры содержимого элементов массива. Цикл прерывается, если getData() возвращает false или если количество заполненных объектов достигло максимального значения (25). После этого созданные объекты передаются функции displayData , которая выводит их на экран.

Функция getData() принимает аргумент типа Dannye , которому внутри функции присваивается имя d . (Символ & здесь – это указатель на объект).

Внутри функции getData() происходит считывание строки из устройства стандартного ввода с последующей его записью в член (свойство) firstname . Если _stricmp() находит, что введенная строка – “ exit ”, функция getData() возвращает false функции main() , сигнализируя, что пора выходить из цикла ввода информации. (Функция _stricmp() сравнивает строки, не обращая внимания на регистр. Строки “exit”, “EXIT”, “Exit” и т.д. считаются идентичными). Если введена строка, отличная от “exit”, функция считывает из стандартного ввода фамилию и номер кредитки и записывает их в объект d .

Задача 2. Описать класс Planet : название, диаметр, биологический вид. Создать массив из 8-9 объектов. С помощью 2 внешних функций получить и вывести данные. Предусмотреть возможность ввода/вывода данных для меньшего числа объектов ( _stricmp ).  displayData () выводит данные и возвращает в main() максимальный диаметр.

Задача 2.

  • Описать класс Planet : название, диаметр, биологический вид.
  • Создать массив из 8-9 объектов.
  • С помощью 2 внешних функций получить и вывести данные.
  • Предусмотреть возможность ввода/вывода данных для меньшего числа объектов ( _stricmp ).
  • displayData () выводит данные и возвращает в main() максимальный диаметр.