— классы и объекты
Объектная ориентация — это просто мышление в терминах объектов.
Итак, мы снова начнем. Я знаю, что вы устали от жаргона. Как мы можем объяснить эти принципы простыми и базовыми терминами?
Позвольте мне попытаться объяснить, разбив основные термины. Вы хорошо поступите, если не будете уделять слишком много внимания программированию, давайте сосредоточимся на физическом мире и повседневных вещах вокруг нас.
Определение терминов:
Объект:согласно https://www.lexico.com/en/definition/object
- Материальная вещь, которую можно увидеть и потрогать.
e. g ‘он тащил большой предмет’
‘маленькие предметы, такие как раковины’ - Человек или вещь, на которую направлено определенное действие или чувство.
например, "болезнь стала объектом расследования"
"он ненавидел быть объектом общественного внимания"
Ориентация: согласно https://www.lexico.com/en/definition/object
- Основное отношение, убеждения или чувства человека к определенному предмету или проблеме.
«Его книгу стоит прочитать, независимо от вашей политической ориентации» - Ознакомление с чем-либо.
«многие судьи дают инструкции, чтобы помочь присяжным сориентироваться»
Исходя из этих определений, объектная ориентация просто означает способность мыслить в терминах физических или материальных вещей. Каждый человек объектно-ориентирован, если вы можете подумать о том, как книги получаются из деревьев, или о том, как люди являются частью более крупного сообщества животных, или о том, как работает ваша звуковая стереосистема, то вы сможете понять объектно-ориентированность в программировании.
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) — это просто возможность перенести ваши знания о физических объектах в разработку программного обеспечения и программирование. Программа, использующая ОО-технологию, представляет собой набор объектов, как правило, ни один объект не должен иметь возможности манипулировать внутренними данными другого объекта.
В программировании говорят, что объект имеет атрибуты и поведение. Атрибут — это свойство объекта, например, цвет мегафона, дата рождения человека. Поведением считается то, что объект делает и как он это делает, например, как мегафон издает звук, танцующий человек, как покупательская тележка подсчитывает общую цену. Свойства также известны как данные, а поведение также известно как методы.
Объекты и классы
Прежде чем идти дальше, позвольте мне кратко рассказать о классах. Объекты — это то, что вы можете отнести к дизайну или чертежу, это то, что разработчик придумывает, чтобы действовать как руководство в создании чего-то материального. Это что-то материальное известно как класс. Классы создаются из дизайна (объекта), они известны как экземпляры объекта.
Итак, каждая ООП-книга рассказывает об автомобилях. С автомобилями легко и просто объяснить ООП, и я намерен даже упростить его.
Из одного объекта можно создать несколько классов с разными реализациями. Дизайн одного автомобиля можно использовать для всей производственной линии
Каждый класс/автомобиль будет иметь одни и те же свойства, но не обязательно одинаковые значения свойств. Пример
Автомобильный объект может иметь:
Свойства/данные =› carColour, carDoors, yearOfManufacture, номерной знак
Behaviours/methods =-› doorOpens, startCar, changeGear
Все вышеперечисленные свойства и методы присутствуют в каждом автомобиле, они являются чертежами производства каждого автомобиля. Но эти свойства различаются от автомобиля к автомобилю, как и то, как они интерпретируют методы. Автомобили имеют разные цвета и номера, некоторые двери открываются вбок, некоторые автомобили имеют автоматический выбор передач.
Это означает, что классы одного и того же объекта будут иметь одни и те же атрибуты, но разные реализации этих атрибутов.
Диаграмма UML выше описывает простой автомобиль объект. В него не включены конструкторы, чтобы не запутать новичка. Если вам нужно понять диаграммы UML, проверьте эту статью, знаки - и + перед свойствами и методами означают их доступность, где - говорит, что атрибут является закрытым (недоступным вне класса), а + говорит, что атрибут общедоступный ( доступны вне класса).
Класс, производный от вышеуказанного объекта, будет выглядеть так
public class Car {
//Properties
private String carColour
private String carDoor
private Date yearOfManufacture
private String plateNumber
//методы
public String getCarColour(){
return color;
}
public String setCarColour(color){
carColour = color
}
public String getPlateNumber(){
return plateNumber;
}
public String getplateNumber(plateNumber){
plateNumber = plateNumber
}
}
Вышеупомянутый класс устанавливает свои собственные свойства внутри. Его свойства и методы не доступны напрямую за пределами класса, как показано на диаграмме UML, но к ним можно получить доступ через методы get и set (они известны как геттеры и сеттеры). Сохраняя свои данные и атрибуты закрытыми, класс выполняет то, что известно как инкапсуляция, которая будет обсуждаться во второй части этой статьи.