При работе с классами и объектами в Джаве иногда возникают некоторые трудности. Несмотря на это, логика в объектно-ориентированном программировании достаточно простая. Она гласит о правилах и отношениях между классами и иными компонентами кода.

В данной статье будет рассказано о том, что собой представляет агрегация и композиция. О наследовании тоже нельзя забывать. Все это – «база», без которой создать качественное приложение не получится.

Класс и объект – понятия

В Google полно информации о том, как грамотно подойти к изучению Джавы. Но перед углубленным изучением языка требуется изучить базовые понятия и определения.

Ни одна программа немыслима без классов, а также objects. Class в Java – это своеобразный шаблон, который помогает создавать объекты. Объект выступает в виде экземпляра класса. Такие определения выдает Google.

Также стоит отметить, что:

  1. В Java class помогает определять структуру и поведение, совместно использующиеся относительно набора objects.
  2. В классе, согласно Google, содержатся переменные и методы. Это – элементы или члены.
  3. Class – база инкапсуляции в Джаве.
  4. У каждого объекта, заданного class, есть структура и поведение, определенные классом заранее.

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

Создание

Вот так, согласно Google, можно создать класс в Java:

Отношения в классах Java

После ключевого слова class принято прописывать его имя. Далее в кавычках указываются переменные и методы. Их конкретное количество не определено.

А вот еще один пример – описание public class для объекта Box. Example предусматривает три ключевые характеристики: ширину, высоту, глубину. Они описаны через переменные:

Отношения в классах Java

В случае с objects требуется воспользоваться таким оператором:

Отношения в классах Java

Google указывает на то, что при создании соответствующего элемента процедура проходит в несколько этапов:

  1. Сначала осуществляется объявление переменной типа класса. Она не будет определять object. Google указывает, что это необходимо для установки переменной, которая умеет ссылаться на объект.
  2. Далее происходит непосредственное создание ранее упомянутого компонента кода. Через оператор new динамически будет зарезервирована память для object, после чего произведется возврат ссылки на него.

После объявления объекта класса Box все переменные класса, по Google, получат значение по умолчанию для заданного типа информации. Для обращения к переменным и дальнейшей работы с ними применяется имя переменной object:

Отношения в классах Java

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

Ассоциации

Ассоциация – когда объекты двух классов ссылаются друг на друга. Они имеют между собой своеобразную связь. Пример – работник может выписать счет. Это влечет за собой ассоциацию между «участниками процесса». Еще один наглядный пример – преподаватели и студенты. Какой-то студент будет учиться у определенного преподавателя.

Ассоциация по Google – это описание связи между двумя определенными objects. Концепция здесь простая: есть объекты, которые могут быть связаны между собой. И эти связи требуется как-то описывать.

Aggregation и composition

Агрегация и композиция, если верить Google – это частный случай ассоциации. Представлены конкретизированными отношениями между objects в имеющемся исходном коде.

Тут стоит запомнить следующее:

  1. Агрегация – отношение, когда один объект выступает в качестве части другого. Пример – ученик входит в группу любителей химии.
  2. Композиция – более жесткий вариант. Object здесь не только относится к другому “похожему компоненту», но и не может иметь отношение к другим. Пример – машина и двигатель. Второй элемент способен выступать без автомобиля, но он не сможет находиться одновременно в нескольких транспортных средствах. А студенты способны посещать различные группы по интересам одновременно.

Все это – условное описание, которое дает Google. Но за счет него даже новичок сможет достаточно быстро разобраться, с чем ему предстоит иметь дело.

Примеры кодов

Чтобы позиции относительно рассматриваемого направления были быстро поняты, лучше рассмотреть наглядные примеры. Их очень много в Google. Почти все они выступают в качестве тривиальных.

Примеры основываются на следующих принципах:

  1. В пределах одного класса создается ссылка на другой и наоборот. Второй вариант встречается не всегда.
  2. Осуществляется развитие заданной идеи в зависимости от имеющихся связей. У машины 4 колеса, она будет со всеми связана. Это значит, что авто имеет ссылку на список колес (или так называемый массив).
  3. В примере нужно соединить робота с оператором его управления. Для этого используется не агрегирование, а ассоциации через ссылки в одном классе на другой.
  4. Robot будет иметь ссылку на класс Operator. Обратный вариант тоже присутствует.

Так описывается Robot:

Отношения в классах Java

А вот – Operator:

Отношения в классах Java

Допустимо создавать ссылки только в одном классе. Тогда связи односторонние. А можно ссылаться на массив или список, но ключевая концепция не меняется.

Наследование

Еще один вариант отношений – это ключевая концепция ООП. Речь идет о наследовании. Оно представляет собой своеобразный механизм при помощи которого удается описывать новые классы на основе уже существующего (родителя). Свойства и функциональность родительского класса, по Google, будут заимствованы «наследником».

Здесь стоит запомнить следующие данные:

  1. Если у дочернего класса есть уникальные свойства, поля спокойно объявляются внутри него.
  2. Главное преимущество наследование – возможность повторного использования программного кода.
  3. Множественное наследование в Джаве отсутствует. Класс наследуется только от одного «родителя».

В Google можно обнаружить немало туториалов и примеров, которые лучше всего объясняют соответствующую особенность.

Особое взаимодействие

Стоит обратить внимание на еще один метод взаимодействия компонентов кода. Речь идет о ситуации, когда постоянная связь между objects отсутствует, но какие-то сведения требуется передать от одного к другому.

Для этого применяется передача object непосредственно в методе. Пример – робот имеет method, который принимает информацию от другой «машины»: координаты. Это требуется для перемещения первого.

Ситуация потребует создания метода, который в виде параметра обладает object класса Robot. Чтобы лучше понимать композицию и агрегацию, а также иные особенности программирования на Java, стоит посетить дистанционные компьютерные курсы. Они помогут без Google быстро освоить выбранное направление и набраться практического опыта.

Отношения в классах Java