16 июн. 2015 г.

Объектно-ориентированное программирование. Основные понятия.

Ponatiya_OOP

Grady__BoochНу вот мы и добрались до ООП :) И теперь надо определиться с основными понятиями, так как жить и кодить надо  по понятиям :)

Понятия объектов и классов, вкратце, мы уже обсудили в начале предыдущего раздела.

Теперь же рассмотрим понятие объекта от авторитета – Гради Буча (мужик на фото справа).

 

Объект — это мыслимая или реальная сущность, обладающая характерным поведением и отличительными характеристиками и являющаяся важной в предметной области.

Объектно-ориентированное программирование  — парадигма программирования, в которой программа строится из взаимодействующих объектов.

Объекты могут взаимодействовать друг с другом посредством сообщений (вызовов методов объектов). Эти методы могут менять внутреннее состояние (данные или поведение) объектов или же получать данные о состоянии объекта.

Объект является экземпляром класса. Классы описывают объекты, как бы являются шаблонами, на основе которых создаются объекты.

Чтобы понять как представить (описать) объект в классе надо уяснить еще несколько понятий. Этим понятиям в книгах по программированию обычно посвящены целые главы. У меня же нет ни какого особого и не особого желания описывать все это так же долго, нудно и подробно. Для этого есть книги и полно материалов в сети, в том числе и видео. Поэтому, для порядка, я приведу очень короткие определения данных понятий.

Абстракция если кратко, то это описание общих характеристик (модели) объекта, без лишней детализации, но достаточной для его представления в программе. Например, все машины можно представить основными параметрами: тип двигателя (бензиновый или дизельный), тип машины (грузовая, легковая и т.п.), количество колес и допустим вес. Далее, если необходимо, абстрактное описание объектов можно детализировать, на следующих уровнях абстракции.

Мощное средство применения абстракции — применение иерархических классификаций. Это позволяет упрощать семантику сложных систем, разбивая их на более пригодные для управления фрагменты.

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

Инкапсуляция – это сокрытие деталей реализации за внешним интерфейсом, т.е. это механизм, который связывает код и данные, которыми он манипулирует, защищая оба эти компонента от внешнего вмешательства и злоупотреблений. Один из возможных способов представления инкапсуляции — представление в виде защитной оболочки, которая предохраняет код и данные от произвольного доступа со стороны другого кода, находящегося снаружи оболочки. Доступ к коду и данным, находящимся внутри оболочки, строго контролируются тщательно определенным интерфейсом.

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

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

Возможно все это сейчас не очень понятно, но когда приступим к практике все встанет на свои места, а пока можно почитать более подробно тут. Надеюсь что этот сайт еще проживет какое-то время. Там девушка Мария очень не плохо и местами забавно все подробно объяснила на пальцах. Чисто конкретно так :)

Ну или Google и Youtube вам в помощь.

Хотя приведу несколько не плохих видео по данной теме:

ООП. Часть 1.

 

ООП. Часть 2.

 

Понятие ООП

 

Введение в ООП

Комментариев нет:

Отправить комментарий