Основные принципы ООП

· абстрагирование

· инкапсуляция

· модульность

· иерархия

Дополнительные принципы:

· типизация

· параллелизм

· устойчивость

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

Объекты и классы — основные абстракции предметной области.

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

Модульность —  это свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне сильно сцепленных, но слабо связанных между собой подсистем (частей).

Модульность снижает сложность системы, позволяя выполнять независимую разработку ее отдельных частей.

Иерархия —  это упорядочение абстракций, расположение их по уровням.

Типизация —  способ защититься от использования объектов одного класса вместо другого, или, по крайней мере, управлять таким использованием.

Параллелизм —  это свойство, отличающее активные объекты от пассивных.

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

Объект– это некая отдельная сущность, выделяющаяся среди других сущностей особыми свойствами, поведением, взаимодействием с себе подобными объектами приложения. Реальные объекты окружающего нас мира обладают тремя базовыми характеристиками: 1.они имеют набор свойств. Совокупность свойств объекта определяет его состояние. Как правило, свойства – это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта. 2.Они способны разными методами изменять эти свойства. Метод–процедура, которая реализует возможные с объектом действия. 3.Способны реагировать на события, возникающие внутри самого объекта. События – это аналог сообщений, которые получают и отправляют объекты. Объекты, имеющие общие свойства, методы обработки данных, объединяются в классы. Класс – это новый тип данных, основанный на единой структуре объекта. При создании класса в современных средах программирования задаются 2 блока: 1.Данные -описываются все структуры данных, с которыми будет работать данный класс, а также создаются экземпляры объектов. 2.Методы- описываются свойства и методы обработки этих данных, еще говорят, описывается поведение данного класса. Классу присваивают имя.

Виртуальные методы. Прежде, чем метод в базовом классе будет переписан, он должен быть объявлен как virtual. Метод в подклассе, который будет переписан, должен быть объявлен с помощью ключевого слова override. Это предотвратит случайную перезапись метода. Методы представляют собой действия, которые можно произвести в связи с данным классом. Возможныемодификаторы - ужеописанные public, static, protected, abstract иеще virtual, override, new и extern. Методам также можно передавать параметры, которые параметризуют его действия.

Метод ReadLine. Метод ReadLine читает из потока ввода строку текста (она завершается символом перевода строки или возврата каретки).

Методы Write и WriteLine. Метод Write выводит на экран значение переданной ему переменной. Он определен для всех базовых типов и поддерживает форматированные строки. Т.обр, можно либо вызвать Write с указанным значением в качестве параметра, либо передать строку форматирования и список значений.

Метод Main - это точка входа в программу. С него начинается выполнение. Этот метод обязательно должен быть статическим. Далее в нашем примере используется метод WriteLine из класса System.Console. Этот метод отправляет строку на стандартный вывод.

Поле класса. Поле класса (переменная-член, datamember, classfield, instancevariable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.

Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (что у него внутри?), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только спецификация (интерфейс) объекта.

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

Полиморфи́зм — возможность объектов с одинаковой спецификацией иметь различную реализацию.

1) Классы, виды классов ООП. Объявление класса, полей и методов класса. Объявление экземпляров класса. Перегрузка методов. Создание наследованного класса. Приемы инкапсуляции. Директивы Public, Private, Protected.

В объектно-ориентированном программировании (ООП) – класс это основной элемент, в рамках которого осуществляется конструирование программ. Класс содержит в себе данные и код, который управляет этими данными.

Виды классов:

· Базовый класс (суперкласс / родитель) — класс, на основе которого создаются другие классы.

· Производный класс (дочерний / потомок) — класс, наследуюший поля и методы другого класса.

· Абстрактный класс — класс, не предполагающий создания экземпляров (объектов класса).

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

Класс также представляет собой объявленный программистом составной тип данных, имеющий в составе:

Поля данных — параметры объекта, задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.

Объекты одного класса имеют одинаковые поля.

Свойство — механизм доступа к полям.

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

Свойство — псевдополе, доступное для чтения и / или записи.

Метод — процедура или функция, принадлежащая какому-либо классу (объекту).

Метод — процедура или функция (подпрограмма), управляющая данными, которые определены в классе. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять. Может обеспечивать доступ к данным (как и свойство).

Экземпляры классов = объекты.

Объект – это просто что-то конкретное, а класс – это некое абстрактное понятие, которое просто содержит описательную часть.

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

Перегрузка методов – совместное использование одного имени двумя и более методами одного класса при условии, что их параметры объявляются по-разному.

Наследование классов — очень мощная возможность в объектно ориентированном программировании. Оно позволяет создавать производные классы (классы наследники), взяв за основу все методы и элементы базового класса (класса родителя). Таким образом экономится масса времени на написание и отладку кода новой программы. Объекты производного класса свободно могут использовать всё, что создано и отлажено в базовом классе. При этом, мы можем в производный класс, дописать необходимый код для усовершенствования программы: добавить новые элементы, методы и т.д.. Базовый класс останется нетронутым.

Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (что у него внутри?), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только спецификация (интерфейс) объекта.

Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public.

Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.))

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).

Сокрытие реализации целесообразно применять в следующих случаях:

предельная локализация изменений при необходимости таких изменений,

прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

 

public
Публичные методы класса. Логично да? Какие методы у нас должны быть публичными - те которые составляют интерфейс класса. То есть для, например, класса кеширования у нас должен быть такой интерфейс:

 

interface Cache {

public function get($name);

public function set($name, $value);

public function has($name);

public function remove($name);

public function removeAll();

}

 

Давайте введем понятие "клиентский код". Это тот код который будет использовать ваш код, ваши объекты. Что он должен знать о реализации ваших классов? Да ничего он знать не должен. Он должен знать только как им пользоваться. Это как раз таки интерфейс и регламентирует. Мол "этот объект позволяет вам брать/сохранять/удалять данные в/из кэша. Клиентский код не знает где кэш находится, есть ли он вообще... да и ему и не нужно.

private
Внутренние методы классов. Те которые не входят в интерфейс но нужны, скажем, для уменьшения дублирования реализации.


class FileCache implements Cache{

public function has($name) {

     return is_file($this->getCacheFilePath($name));

}

 

public function get($name) {

    if (!$this->has($name)) {

         return null;

    }

 

    return unserialize(file_get_contents($this->getCacheFilePath($name)));

}

 

private function getCacheFilePath($name) {

    return $this->cacheDir. '/'. $name;

}

}

 

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

3. Интегрированная среда разработчика. Интерфейс среды Delphi: основные окна, инструменты, объекты. Состав и характеристика проекта.

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

Главное окно предназначено для управления процессом создания программы. Основное меню содержит все необходимые средства для управления проектом. Левая панель содержит набор кнопок быстрого доступа, дублирующих наиболее часто используемые команды меню. Правая панель представляет собой меню библиотеки визуальных компонентов (VCL), которые представляют собой стандартные сервисные программы, помещаемые программистом на окно формы. Каждый компонент имеет определенный набор свойств (параметров), которые можно изменять как на этапе проектирования, так и во время выполнения программы.

Окно инспектора объектов (вызывается c помощью клавиши F11) предназначено для изменения свойств выбранных компонентов и состоит из двух страниц. Страница Properties (Свойства) предназначена для изменения необходимых свойств компонента и делится на две части. Слева находится имя свойства, а справа – текущее значение свойства, которое может быть изменено. Если при щелчке на свойстве появится окно выпадающего списка, то нажав на кнопку со стрелкой, направленной вниз, можно увидеть список возможных значений свойства. Если слева от имени свойства находится значок плюс, то это означает, что свойство содержит некоторое количество вложенных свойств, доступ к которым осуществляется либо нажатием на знак плюс, либо двойным щелчком на свойстве. Страница Events (События) предназначена для определения реакции компонента на то или иное событие (например, нажатие определенной клавиши или щелчок «мышью» по кнопке).

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

Окно текста программы предназначено для просмотра, написания и редактирования текста программы на языке программирования Object Pascal. При первоначальной загрузке в окне текста программы находится набор операторов обеспечивающий возможность функционирования пустой формы в качестве Windows-окна. При помещении новых компонентов на форму, текст программы автоматически дополняется описанием необходимых библиотек стандартных программ (раздел uses) и типов переменных (раздел type) (см. Листинг 1.1).

Программа в среде DELPHI составляется как описание алгоритмов, которые выполняются при возникновении того или иного события (например щелчок «мыши» на кнопке – событие OnClick, создание формы – OnCreate). Для каждого обрабатываемого события, с помощью страницы Events инспектора объектов в тексте программы организуется процедура (procedure), между ключевыми словами begin и end которой программист записывает на языке Object Pascal требуемый алгоритм.

Переключение между окном формы и окном текста программы осуществляется с помощью клавиши F12.

4. Форма и размещение на ней компонентов. Панель компонентов и их свойства. Этапы создания приложения. Этапы разработки интерфейса.

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

Если нужно разместить несколько компонентов одного типа, то нажав и удерживая клавишу Shift, выделите компонент на странице. Отпустив Shift, щелкайте в нужных местах формы. Для прерывания размещения нажмите кнопку-указатель со стрелкой.

Она состоит из большого числа групп, в которых располагаются соответствующие компоненты

обладающий определенными свойствами. Размещая компоненты на форме, программист создает внешний вид своей будущей программы

– окна, кнопки, переключатели, поля ввода и т.п.

Для внедрения нового компонента на форму нужно сделать два щелчка мышкой:

•в панели компонентов, для выбора компонента;

•в рабочем пространстве формы, для указания положения левого

верхнего угла компонента.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: