Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
ОГЛАВЛЕНИЕ
ПОСТАНОВКА ЗАДАЧИ 3
ВВЕДЕНИЕ 4
ГЛАВА 1. ПРОЕКТИРОВАНИЕ КЛАССОВ 6
1.1 Формализация задачи 6
1.2 Проектирование абстракции данных 6
1.3 Определение семантики классов 7
1.4 Определение отношений между классами 10
ГЛАВА 2. РЕАЛИЗАЦИЯ 11
ГЛАВА 3. РЕЗУЛЬТАТЫ 16
ЗАКЛЮЧЕНИЕ 17
СПИСОК ЛИТЕРАТУРЫ 18
ПРИЛОЖЕНИЕ А 19
ПОСТАНОВКА ЗАДАЧИ
Реализовать концепцию контейнеров и итераторов на примере однонаправленного связанного списка.
ВВЕДЕНИЕ
Объектно-ориентированная парадигма программирования не нова. Её истоки восходят к Симуле-67, хотя первая впервые она была полностью реализована в Smalltalk-80. ООП (Объектно-ориентированное программирование) приобрело популярность во второй половине 80-х вместе с такими языками, как С++, Objective C (другое расширение C), Object Pascal и Turbo Pascal, CLOS (обектно-ориентированное расширение Lisp'a), Eiffel, Ada (в её последних воплощениях) и недавно — в Java. В этой статье внимание сосредоточена на C++, Object Pascal и Java, иногда упоминаются и другие языки.
Ключевые черты ООП хорошо известны:
Первая — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП.
Вторая ключевая черта, — наследование — способ определения нового типа, когда новый тип наследует элементы (свойства и методы) существующего, модифицируя или расширяя их. Это способствует выражению специализации и генерализации.
Третья черта, известная как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё удобнее и облегчает расширение и поддержку программ, основанных на них.
Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают.
Алан Кей в свое время вывел пять основных черт языка Smalltalk — первого удачного ОО языка:
Все является объектом. Объект как хранит информацию, так и способен ее преобразовывать. В принципе любой элемент решаемой задачи (дом, собака, услуга, химическая реакция, город, космический корабль и т. д.) может представлять собой объект. Объект можно представить себе как швейцарский нож: он является набором различных ножей и «открывашек» (хранение), но в то же самое время им мы можем резать или открывать что-либо (преобразование).
Каждый объект имеет свою собственную «память» состоящую из других объектов. Таким образом программист может скрыть сложность программы за довольно простыми объектами. К примеру, дом (достаточно сложный объект) состоит из дверей, комнат, окон, проводки и отопления. Дверь, в свою очередь, может состоять из собственно двери, ручки, замка и петель. Проводка тоже состоит из проводов, розеток и, к примеру, щитка.
У каждого объекта есть тип. Иногда тип называют еще и классом. Класс (тип) определяет какие сообщения объекты могут посылать друг другу. Например, аккумуляторная батарея может передавать электролампе ток, а вот момент или физическое усилие - нет.
Все объекты одного типа могут получать одинаковые сообщения. К примеру у нас есть 2 объекта: синяя и красная кружки. Обе разные по форме и материалу. Но из обеих мы можем пить (или не пить, если они пустые). В данном случае кружка — это тип объекта.
Самое лаконичное описание объекта предложил Буч: «Объект обладает состоянием, поведением и индивидуальностью».
Дата публикования: 2015-02-18; Прочитано: 194 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!