Имею 4-летний опыт разработки программного обеспечения. Я вообще занимался веб-разработкой и через некоторое время понял, что забыл информацию по очень базовым темам. Я начал разрабатывать себя об этих основах и, развивая себя, я решил поделиться своими знаниями и опытом с вами. Такова история этих статей. (Надеюсь, я напишу и другие статьи)
На самом деле, я решил разработать шаблоны проектирования — я почти уверен, что каждый студент CS или каждый разработчик слышал что-то. о них. Но перед этим всем будет полезно вспомнить основы ООП.
Во-первых, нам нужно определить объект.
Объект в объектно-ориентированном программировании (ООП) — это абстрактный тип данных, созданный разработчиком.
Также нам нужно определить класс;
В объектно-ориентированном программировании класс — это расширяемый шаблон кода программы для создания объектов, предоставляющий начальные значения для состояния (переменные-члены) и реализации поведения (функции-члены или методы).
На самом деле класс — это план, который создает программист.
После этих основных определений мы можем вспомнить UML. Я объясню их, приведя несколько иллюстраций — созданных с помощью приложения Creately.
Как видите, вы можете проиллюстрировать класс’
- стереотип
- название
- атрибуты
- методы б
с помощью диаграмм UML.
После определения класса вы можете создавать объекты с помощью этого класса. Например, вы можете определить класс с именем Car. Затем вы можете создать экземпляр с именем Tesla этого класса.
Также существуют иерархии между классами. В предыдущем абзаце я привел пример Car. Предположим, что есть еще один класс с именем Автомобиль. В этом случае Автомобиль является родителем Автомобиля. Потому что могут быть и другие классы, такие как Грузовик, Мотоцикл и т. д.
Родительский класс, подобный тому, который мы только что определили, называется суперклассом. Его дочерние элементы являются подклассами. Подклассы наследуют состояние и поведение от своего родителя, определяя только отличающиеся атрибуты или поведение.
В объектно-ориентированном программировании есть 4 важных понятия. Эти;
- Абстракция
- Инкапсуляция
- Полиморфизм
- Наследование
Абстракция
В объектно-ориентированной программе мы часто проецируем объекты реального мира на язык программирования. Конечно, делая это, мы делаем некоторые абстракции. Например, при проектировании класса автомобиля мы делаем некоторые предположения и создаем только номер, марку, цвет автомобиля для класса. Это называется абстракцией.
Инкапсуляция
Инкапсуляция — это способность объекта скрывать части своего состояния и поведения от других объектов, предоставляя остальной части программы только ограниченный интерфейс.
Обычно мы делаем это, используя ключевые слова private, public, protected и интерфейсы и абстрактные классы/методы в современных языки программирования. Позвольте мне привести пример. У нас есть класс транспортного средства. А в классе Vehicle есть метод drive(). Вы можете реализовать метод drive() с различными потоками в соответствии с классом Car, Helicopter и т. д.
Наследование
Наиболее важным преимуществом наследования является сокращение строки кода. Если вам нужны столь же похожие классы с другим, вы можете расширить этот класс и реализовать свою логику в новых классах.
Полиморфизм
Вы можете думать о полиморфизме как о способности объекта «притворяться» чем-то другим, обычно классом, который он расширяет, или интерфейсом, который он реализует.
Полиморфизм — это способность программы определять реальный класс объекта и вызывать его реализацию, даже если его реальный тип неизвестен в текущем контексте.
Отношения между объектами
Существует 6 основных типов отношений между объектами. Эти
- Зависимость
- Ассоциация
- Агрегация
- Сочинение
- Выполнение
- Наследование
Зависимость. Зависимость — это связь между двумя или более объектами, при которой объект зависит от другого объекта или объектов для своей реализации. Класс A может повлиять на класс B, когда вы что-то меняете. по классу А.
Ассоциация. По сути, ассоциативное отношение между двумя или более объектами обозначает путь связи между ними, так что один объект может отправить сообщение другому. Объект А знает об объекте Б.
Агрегация. Агрегированный объект — это объект, который содержит другие объекты. Например, класс Airplane будет содержать объекты Engine, Wing, Tail, Crew. Объект А знает об объекте B и состоит из B. Класс A зависит от B.
Композиция: описывает класс, который ссылается на один или несколько объектов других классов в переменных экземпляра. Это позволяет моделировать связь has-a между объектами. Объект А знает об объекте Б, состоит из Б и управляет жизненным циклом Б.
Реализация:класс А определяет методы, объявленные в интерфейсе B. Объекты A можно рассматривать как B. Класс A зависит от B.
Наследование:класс А наследует интерфейс и реализацию класса B, но может расширять их. Объекты A можно рассматривать как B. Класс A зависит от B.
Я также хотел бы поделиться с вами некоторыми ресурсами, которые невероятно полезны для подготовки этих/этих статей: