Классы в объектно-ориентированном программировании
02.11.2019В этой статье я попробую простым языком и кратко рассказать, что такое класс в общем смысле и применительно к языку Java.
В общем смысле класс – это абстракция какого-нибудь предмета или явления. Например, если мы пишем приложение телефонный справочник, то со 100%-й вероятностью можно утверждать, что в нем будет как-то описываться человек. В этом описании, например, будет фигурировать ФИО этого человека, его адрес и его телефонный номер.
Это его описание есть абстракция. Абстракция – это упрощение какого-то понятия или предмета. В данном случае мы упростили человека до ФИО, адреса и телефона. Нам совсем нет необходимости учитывать такие понятия как его рост, возраст или трехмерную модель. От всего этого мы абстрагировались.
Еще можно сказать, что класс – это чертеж объекта или понятия. В этом чертеже мы учитываем только важные характеристики. Эти характеристики могут варьироваться в зависимости от поставленной задачи. Например, для приложения телефонный справочник достаточно ФИО, адреса и телефонного номера. А для приложения, которое высчитывает ваш индекс массы тела нужно знать только ваш рост, вес, пол и возраст. Оно полностью абстрагировалось от таких понятий как ФИО, адрес и телефон.
Думаю я простым языком смог рассказать, что такое класс. Давайте теперь создадим несколько классов используя язык java. Далеко ходить не будем и создадим класс человек для двух гипотетических приложений телефонный справочник и программа расчета индекса массы тела.
Например, для телефонного справочника он может выглядеть так.
class Person { private String firstName; private String secondName; private String address; private String phoneNumber; }
Грубо говоря в java класс – это некая структура для удобства объединяющая в себе несколько переменных (полей класса) и действий (методов). По ней будут создаваться объекты. Если кратко, то объекты – это, что-то конкретное, например, Вы, я, Ваша мама и т.д. Это что-то, что сделано по классу (как по чертежу). Этими объектами будет в дальнейшем манипулировать приложение.
Вот еще пример класса человек, но уже для приложения рассчитывающего индекс массы тела.
class Person { private int age; private String sex; private int height; private int weight; }
Теперь он содержит другие поля класса и может содержать другие действия. В java классы могут содержать сотни таких характеристик, выстраиваться в иерархии и содержать внутри себя ссылки на другие классы. Например, вот класс человек для приложения автомобильный парка. Он в себя может включать и другие классы.
class Person { private String firstName; private String secondName; private Car car; private String phoneNumber; } class Car { /* номер автомобиля */ private String number; /* грузоподъемность */ private String liftingCapacity; /* категория водителя */ private String driverCategory; }
В конце добавлю, что Вы не должны зацикливаться на том, что класс может представлять, что-то материальное. Например, класс может представлять такое понятие как список. Который содержит некоторое количество объектов любых других классов. Или даже действие.
Также класс может вообще не содержать никаких полей, а только действия или даже может и действий не содержать. Очень многое зависит от поставленной задачи.