— классы и объекты

Объектная ориентация — это просто мышление в терминах объектов.
Итак, мы снова начнем. Я знаю, что вы устали от жаргона. Как мы можем объяснить эти принципы простыми и базовыми терминами?
Позвольте мне попытаться объяснить, разбив основные термины. Вы хорошо поступите, если не будете уделять слишком много внимания программированию, давайте сосредоточимся на физическом мире и повседневных вещах вокруг нас.
Определение терминов:
Объект:согласно https://www.lexico.com/en/definition/object

  1. Материальная вещь, которую можно увидеть и потрогать.
    e. g ‘он тащил большой предмет’
    ‘маленькие предметы, такие как раковины’
  2. Человек или вещь, на которую направлено определенное действие или чувство.
    например, "болезнь стала объектом расследования"
    "он ненавидел быть объектом общественного внимания"

Ориентация: согласно https://www.lexico.com/en/definition/object

  1. Основное отношение, убеждения или чувства человека к определенному предмету или проблеме.
    «Его книгу стоит прочитать, независимо от вашей политической ориентации»
  2. Ознакомление с чем-либо.
    «многие судьи дают инструкции, чтобы помочь присяжным сориентироваться»

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

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

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

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

Объекты и классы

Прежде чем идти дальше, позвольте мне кратко рассказать о классах. Объекты — это то, что вы можете отнести к дизайну или чертежу, это то, что разработчик придумывает, чтобы действовать как руководство в создании чего-то материального. Это что-то материальное известно как класс. Классы создаются из дизайна (объекта), они известны как экземпляры объекта.

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

Из одного объекта можно создать несколько классов с разными реализациями. Дизайн одного автомобиля можно использовать для всей производственной линии
Каждый класс/автомобиль будет иметь одни и те же свойства, но не обязательно одинаковые значения свойств. Пример

Автомобильный объект может иметь:

Свойства/данные =› 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 (они известны как геттеры и сеттеры). Сохраняя свои данные и атрибуты закрытыми, класс выполняет то, что известно как инкапсуляция, которая будет обсуждаться во второй части этой статьи.