- •Лабораторная работа №2
- •Основы объектно-ориентированного программирования
- •Инкапсуляция
- •Полиморфизм
- •Абстракция данных
- •Виды классов
- •Структура класса
- •Отношения между классами
- •Области доступа
- •Советы по использованию уровня доступа
- •«Паблик Морозов»
- •Абстрактный метод
- •Абстрактный класс
- •Виртуальный метод
- •Интерфейс
- •Диаграммы классов
- •Задание
Проектирование классов
Лабораторная работа №2
Цель лабораторной работы: научиться проектировать классы и работать с системой управления версиями.
Данная лабораторная работа состоит из двух частей:
В первой части необходимо создать проект в Visual Studio и разработать в нём классы на заданную тематику;
Во второй части необходимо научиться работать с системой управления версиями и поместить проект в хранилище версий.
Основы объектно-ориентированного программирования
Объектно-ориентированное программирование (ООП) — парадигма программирования (совокупность идей и понятий, определяющих стиль написания компьютерных программ), в которой основными концепциями являются понятия объектов и классов.
Другими словами: объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Объектное и объектно-ориентированное программирование возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Кроме того, в современном объектно-ориентированном программировании часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование).
Основные концепции:
Система состоит из объектов.
Объекты некоторым образом взаимодействуют между собой
Каждый объект характеризуется своим состоянием и поведением
Состояние объекта задаётся значением полей данных
Поведение объекта задаётся методами
Инкапсуляция
Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.
Т.е. при использовании класса достаточно знать функции, которые он выполняет, не задумываясь как внутри класса производится обработка и вычисления.
Можно привести аналогию с реальным миром: пользуясь сотовым телефоном человек не задумывается что происходит когда он начинает звонок и разговор с другим абонентом. Для него достаточно знать, что набрав номер телефона он инициирует звонок и может разговаривать используя микрофон для передачи голоса, и динамик для того, чтобы услышать говорящего.
Полиморфизм
Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Если взять пример из реального мира: Производится множество различных моделей сотовых телефонов, но интерфейс взаимодействия с пользователем у них практически одинаковый.
Абстракция данных
Абстракция данных — подход к обработке данных по принципу чёрного ящика. Данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.
Абстракция в объектно-ориентированном программировании — это придание объекту характеристик, которые чётко определяют его концептуальные границы, отличая от всех других объектов. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.
Фундаментальная идея состоит в разделении несущественных деталей реализации подпрограммы и характеристик, существенных для корректного ее использования. Такое разделение может быть выражено через специальный «интерфейс», сосредотачивающий описание всех возможных применений программы.
Под «интерфейсом» понимается некий набор методов и средств доступа к данным класса, которые могут использоваться извне. Например, класс для генерации случайных чисел содержит метод, при вызове которого возвращается произвольное случайное число. Доступа к алгоритму генерации у программиста нет, но есть возможность вызвать метод, который возвратит результат его работы. Этом и заключается основной принцип абстрации – есть метод, который выполняет определённый алгоритм, при этом, логика работы самого алгоритма скрыта.
Класс
Идея классов пришла из работ по базам знаний, имеющих отношение к исследованиям по искусственному интеллекту. Используемые человеком классификации в зоологии, ботанике, химии, деталях машин, несут в себе основную идею, что любую вещь всегда можно представить частным случаем некоторого более общего понятия. Конкретное яблоко — это в целом некоторое яблоко, вообще яблоко, а любое вообще яблоко — фрукт.
Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов.
Например: Класс «Автомобиль» задаёт общее поведение для всех автомобилей.
Класс это структурное описание, которое делается на этапе написания кода. В процессе выполнения программы создаются экземпляры класса (объекты), которые содержат конкретные данные и методы и взаимодействуют между собой.
Определение класса выглядит следующим образом:
class Parent
{
}
