Хороший код адекватно отражает систему, которую описывает, он устойчив к изменениям в этой системе. Плохой код запутанный, хрупкий и непонятный — он замедляет разработку. На примере основные принципы ооп реального приложения разбираемся, чем так хорошо загадочное ООП.
Абстракция, инкапсуляция, наследование, полиморфизм
- Абстракция и инкапсуляция являются основными понятиями объектно-ориентированного программирования (ООП) и используются для организации кода и данных в более эффективную и удобную структуру.
- При этом любой объект класса «Кошка» (неважно, рыжая она, серая или чёрная) будет мяукать, мурчать, умываться и спать — если мы пропишем соответствующие методы.
- Например, для всех человечков действие «ходить» — это одинаковый метод.
- Объект — это экземпляр класса, который создается на основе его шаблона.
С их помощью можно передать объекту параметры и провести необходимые операции. Методы являются аналогами функций (возвращают значение) и процедур (не возвращают), но с той разницей, что они являются частью какого-то класса. Например, можно в классе Character создать метод Move(), который будет отвечать за движение персонажа. Объект — это экземпляр класса, или его копия, которая находится в памяти компьютера. Например, когда вы создаёте переменную типа String и присваиваете ей значение «Строка», то в памяти создаётся экземпляр класса String.
Принцип разделения интерфейса (ISP) — I
Наследование — это механизм, позволяющий создавать новые классы на основе уже существующих. Новый класс наследует атрибуты (поля и методы) родительского класса, что позволяет повторно использовать код и упрощает разработку. Полиморфизм позволяет с помощью идентичных методов обрабатывать разные типы данных, например двузначные числа и числа с плавающей точкой. Также полиморфизмом считается возможность переопределять методы в дочерних классах для обработки других видов данных или выполнения дополнительных действий при вызове аналогичного метода. Каждый верхний слой над объектом (классы) более абстрактный, чем его «младшая версия». Это позволяет не переписывать по 10 раз один и тот же объект, указывая одни и те же атрибуты и методы.
Как работают абстракция и инкапсуляция в ООП
Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка (то есть класс в Смолтоке является примитивом, посредством которого описаны более сложные конструкции). Именно он стал первым широко распространённым объектно ориентированным языком программирования.
Появление в ООП отдельного понятия класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП — это в чистом виде абстрактный тип данных, создаваемый программистом. С этой точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены. Классами в C# является практически всё — строки, числа, массивы и так далее.
Это применимо для написания небольших приложений или скриптов, которые выполняют простые действия, такие как чтение и запись данных, сортировка и т.д. Родитель — это класс, на основе которого мы создаём что-то новое. Потомок (или дочерний элемент) — это то, что получилось при создании на основе класса или объекта. В Python создавать новые объекты можно только на основе класса, а в некоторых языках — и на основе объекта. Этот принцип является одним из четырёх фундаментальных принципов ООП и называется инкапсуляцией. Если вернуться к программированию, то полиморфизм позволяет единообразно обращаться к объектам различных классов (обычно имеющих общего предка) – вещь, которую трудно переоценить.
Чтобы пользоваться ООП, нужно сначала изучить теорию и освоить процедурный подход, поэтому порог входа высокий. Программу сложно сломать, так как инкапсулированный код недоступен извне. Планируешь создать электронную таблицу и работать в ней? В новом материале GoIT мы расскажем про нюансы работы в Google Таблицах и Майкрософт Excel.
Если вы хотите разобраться в нём — поступайте в Skypro на курс «Java-разработчик». Эксперты расскажут об основах Java и подробно объяснят, как выполнять принципы объектно-ориентированного программирования. Объектно-ориентированный подход — это когда язык программирования использует объекты, чтобы описать машине, что нужно сделать. Объектно-ориентированными называют языки Java, JavaScript, Python, C++, Ruby, Swift, PHP и ряд других, хотя некоторые из них могут использовать несколько подходов, в том числе функциональный и процедурный. Этот принцип гласит, что вся важная информация, необходимая для работы объекта, в нем же и хранится. И только определенные данные доступны для внешних функций и объектов.
Взаимодействие с объектами, а не логикой упрощает понимание кода. Для модификации не нужно погружаться в то, как построено ПО. Благодаря полиморфизму можно быстро адаптировать код под требования задачи, не описывая новые объекты и функции. До появления ООП, доминирующим подходом к разработке было процедурное программирование. В нем программа разбивается на набор функций и работает последовательно, выполняя инструкции в строгом порядке.
Свойства могут быть различных типов, таких как числа, строки, булевы значения и другие. Они предоставляют информацию о состоянии объекта и могут быть доступны для чтения или записи. Метод – это действие или функция, которую может выполнить объект.
Если мы проследим историю возникновения человека, то окажется, что с момента зарождения жизни на планете прошли миллиарды лет. А если представить, что человек возник из обезьяны (на основе обезьяны), то прошла всего пара миллионов лет. Если попытаться классифицировать критические высказывания в адрес ООП, можно выделить несколько аспектов критики данного подхода к программированию. Также тут можно заметить ключевое слово this, которое обозначает, что поле принадлежит этому объекту. Использовать его необязательно, но оно делает код более читаемым. Если бы не было объекта, было бы сложно определить, цвет какого фона и какого шрифта будет указываться, потому что их в программе может быть несколько.
Чтобы управлять автомобилем, нам в базовом случае достаточно знать о том, где находится руль, педаль тормоза и газа (да-да, и педаль сцепления для механики). То есть чтобы ехать нам совсем не нужно понимать тонкости работы двигателя, передачи крутящего момента, как устроен гидро или электроусилитель руля. Мы просто нажимаем на газ и машина едет, крутим руль и она поворачивает.
Например, в сеттер для переменной можно включить логику по проверке передаваемых значений либо не предоставлять сеттеры в классе вовсе, если класс должен быть доступен только для чтения. Прототипное программирование, сохранив часть черт ООП, отказалось от базовых понятий — класса и наследования. Лука Карделли[англ.] и Мартин Абади построили теоретическое обоснование ООП и классификацию на основе этого обоснования[7][8][9][10]. Они отмечают, что выделенные ими понятия и категории вместе встречаются далеко не во всех ОО-языках, большинство языков поддерживают лишь подмножества теории, а порой и своеобразные отклонения от неё.
Объектно-ориентированное программирование (ООП) — это методология разработки программного обеспечения, основанная на представлении программы в виде набора взаимодействующих объектов. Например, у нас есть класс «Кошка», обладающий атрибутами «порода», «окрас», «возраст» и методами «мяукать», «мурчать», «умываться», «спать». Присваивая атрибутам определённые значения, можно создавать вполне конкретные объекты. Простыми словами — реализующие классы не должны противоречить базовому типу или интерфейсу. Поведение таких классов должно быть ожидаемым для функций, которые используют базовый тип.
В прошлой статье из этого цикла у нас была игра в шарики. Мы сделали игровое поле и поместили на него объекты шариков, которые что-то умели. Мы возьмём код из прошлой статьи и на её основе разберём три новых термина в ООП — инкапсуляцию, наследование и полиморфизм.
В этой статье подробно описано, кто такой Team Lead и какие обязанности он выполняет в компании. В материале рассмотрены преимущества и недостатки роли тимлида в IT-индустрии. Также данный материал поможет разобраться в том, как развиваться дальше в карьере тимлида и что нужно знать для того, чтобы эффективно работать. Например, общее для всех автомобилей действие «завестись» у спортивного автомобиля может быть реализовано путем нажатия кнопки, а у грузового – с помощью ключа. Возьмем для примера абстрактный класс «Автомобиль», который наследуют два конкретных класса – «Спортивный автомобиль» и «Грузовой автомобиль». При рассмотрении полиморфизма необходимо помнить, что этот принцип неразрывно связан с другим принципом ООП – наследованием, которое помогает реализовать полиморфизм.
IT курсы онлайн от лучших специалистов в своей отросли https://deveducation.com/ .