Модульное программирование – это процесс разделения компьютерной программы на отдельные подпрограммы. Модуль – это отдельный программный компонент. Его часто можно использовать в различных приложениях и функциях с другими компонентами системы. — www.techopedia.com
Хотя в этом посте акцент делается на модульности, мы рассмотрим краткий базовый курс классов и наследования, который является частью Объектно-ориентированной методологии, применяемой Java, чтобы собрать все воедино.
Классы ☕️
Если мы еще не знали, что все в Java так или иначе связано с классом, почему? потому что Java – это объектно-ориентированный язык программирования, и, как и в любом языке ООП, Все является объектом. И для того, чтобы объекты имели “Группировку” или “Схему”, они должны принадлежать к классу или быть классифицированы внутри него.
Вот пример.
Транспортные средства включают вагоны, велосипеды, автотранспортные средства (мотоциклы, легковые автомобили, грузовики, автобусы), железнодорожные транспортные средства (поезда, трамваи), плавсредства (корабли, лодки), транспортные средства-амфибии (винтовые транспортные средства, суда на воздушной подушке), летательные аппараты (самолеты, вертолеты) и космические аппараты. — википедия
Следуя определению транспортных средств в Википедии, хотя мы могли бы легко классифицировать синий автомобиль и синий велосипед как два разных объекта, но мы в равной степени можем сказать, что они оба являются “Транспортными средствами” и поэтому принадлежат к группе или классу “Транспортных средств”. Мы также видим, как классы действуют как чертежи для нескольких других типов объектов (включенных выше).
Хотя эти объекты принадлежат к одному и тому же классу, они не обязательно выполняют одни и те же “функции/действия”, в этом случае мы называем эти функции/действия “методами”.
Методы 🏃🏼 ♀ ️ 💨
Мы можем сказать, что метод – это любое действие, которое может выполнить объект. Действия, в том числе: летать, ехать, ехать, разворачиваться. Однако объекты одного и того же класса (например, автомобиль и велосипед в нашем примере) могут иметь не все общие методы, точно так же, как автомобиль нельзя крутить педали, точно так же велосипед нельзя водить. Думайте о методах как о глаголах.
public class Car { public void drive() { } public void reverse() { } public void park() { } }
Атрибутами 🎨
Атрибуты – это свойства объекта, это те вещи, которые определяют объект или отличают один объект от другого. “синяя машина” — слово “синяя” говорит вам немного больше об автомобиле. Думайте об Атрибутах как о прилагательных.
Вы также могли бы сказать, что атрибуты класса – это переменные внутри класса.
public class MyClass { int x = 5; int y = 6; }
Наследование 👩 👩 👧 👧
Приятно иметь кучу объектов и их коллективных методов и атрибутов, но что было бы лучше для нас, чтобы разделить эти методы и атрибуты между другими связанными объектами, и зачем нам это делать? Ну, в основном для повторного использования и поддержания принципа DRY (Не повторяйся). Вот где пригодится наследование, наследование позволяет использовать один класс ( подкласс/дочерний )
“наследует” атрибуты и методы от другого класса ( суперкласс/родительский )
.
Мы не будем слишком углубляться в детали наследования, мы просто рассмотрим практический пример на Java. Но для заметок у нас есть несколько типов наследования:
- Сингл ( мы бы прикоснулись к этому)
- Множественный
- Многоуровневый
- Иерархический
- Гибридный
Чтобы объявить дочерний класс родительского класса в Java, вы используете ключевое слово расширяет |/.
Модульность 🍰
Модульность включает в себя процесс разбиения программы на компоненты или подпрограммы.
[“Парень” + “сердце” + “бла-бла”] = 😘
Надеюсь, приведенный выше смайлик – достаточно хорошая иллюстрация. Основным преимуществом модульности наших программ является то, что она помогает нам быстрее и эффективнее обнаруживать и отлаживать проблемы.
Пакеты
Пакет в Java используется для группировки связанных классов. Пакет – это, по сути, папка связанных классов. Пакеты пригодятся при создании более удобного в обслуживании кода и в основном бывают двух типов:
- Встроенные пакеты ( пакеты из Java API)
- Пользовательские пакеты ( Пакеты, которые вы создаете)
Мы будем рассматривать только второй вариант.
Собирая Все это Воедино 👩 👩 👦 👦
Давайте рассмотрим очень простой пример: мы создадим класс Calculator (родительский класс) с методами и атрибутами класса, затем расширим из него подкласс MyCalculator (дочерний класс), который унаследует от него методы и атрибуты. Мы будем использовать модульность по умолчанию, поскольку мы будем разделять каждый из файлов класса и помещать их в одну папку (пакет).
Примечание: У вас должен быть только один класс для каждого файла пакета
Сначала у нас будет структура папок нашего пакета следующим образом:
Примечание: Я буду использовать код Visual Studio для этого урока “почему?? ” ” ” ” Как бы ни было здорово и приятно иметь IDE, такую как Netbean или IntelliJ, абстрагирующую от вас все детали компиляции, одна проблема заключается в том, что вы можете не совсем понимать процесс и адекватно отлаживать проблемы, когда возникает необходимость.
Calculator.java 👨🏽 💼 👩🏼 💼
Мы объявили родительский класс Calculator, у него есть один атрибут класса z и два метода класса addition( ) и subtraction( ). Метод сложения принимает два аргумента и выводит их сумму, в то время как метод вычитания выводит разницу.
MyCalculator.java 👨 👧
Здесь мы объявляем дочерний класс MyCalculator, который наследуется от родительского класса Calculator. Обратите внимание, что мы использовали необъявленную переменную z, нам не нужно объявлять переменную z снова, потому что дочерний класс (MyCalculator) наследует все атрибуты и методы от родительского (Calculator). И поскольку мы уже объявили z в родительском классе, нам не нужно повторять объявление в дочернем классе.
Мы также создали новый метод умножения, который также принимает две целочисленные переменные и возвращает их произведение.
Примечание: Новый метод, созданный в нашем дочернем классе, не может быть доступен из нашего родительского класса. наследование не работает наоборот.
Примечание (еще раз): Чтобы наследовать от родительского класса, используйте “extends” ключевое слово
Main.java ☕️
В этом классе нет ничего особенного, в основном там у нас есть наш основной метод, если вы еще не знали, основной метод – это то, что отмечает инициализацию нашей программы, Java ищет этого парня.
- Строка 3: мы объявляем две целочисленные переменные a и b, это будут аргументы, которые мы будем передавать нашим методам.
- Строка 4: Чтобы получить доступ к методам, которые находятся в нашем классе MyCalculator, нам нужно создать экземпляр этого класса. Итак, мы создали экземпляр Моего калькулятора под названием demo.
- Мы вызываем методы сложения, вычитания и умножения, передавая переменные a и b в качестве аргументов.
Запуск 🚀
Хорошо, это та часть, где мы запускаем нашу программу. Поскольку мы не используем Netbeans или IntelliJ, мы будем компилировать и запускать нашу программу вручную.
Существует два основных шага для успешного запуска Java-программы:
- Компиляция ( javac )
- Выполнение ( java )
Для компиляции мы используем команду javac
Для выполнения мы используем команду java
Примечание : Обычно, когда мы имеем дело только с одним файлом/классом Java, мы выполняем обе команды только для этого класса. но в этом случае, когда у нас есть несколько связанных классов, было бы неплохо скомпилировать все программы один раз. К счастью, мы можем это сделать.
Откройте командную строку или терминал, в зависимости от того, какую операционную систему вы используете.
Для Windows: Нажмите клавишу Windows + R, затем введите “cmd” (без кавычек) и нажмите enter. Вы должны увидеть всплывающую командную строку.
Теперь нам нужно зайти в каталог, в котором мы сохранили нашу программу. Я предполагаю, что он был сохранен на рабочем столе, а имя папки – “калькулятор”. Чтобы перейти в каталог вашей программы, введите:
рабочий стол компакт-диска/калькулятор
Теперь вы должны находиться в каталоге вашего проекта.
Компилировать
Чтобы скомпилировать все классы в каталоге одновременно, введите:
javac ./*.java
Примечание: Эта команда сообщает компилятору java поискать в текущей папке, найти все, что имеет расширение “java” ( в данном случае, Calculator.java , MyCalculator.java & Main.java ) и скомпилируйте их.
Другим способом компиляции классов было бы по одному: если вы предпочитаете использовать этот метод, вам нужно выполнить компиляцию в таком порядке:
- Скомпилируйте родительский класс ( javac Calculator.java )
- Скомпилируйте Дочерний класс ( javac MyCalculator.java )
- Окончательно, Скомпилируйте основной класс ( javac Main.java )
Это создаст файл .class для каждого из классов ( MyCalculator.class , Calculator.class , Main.class ).
Выполнять
Чтобы запустить вашу программу, вам нужно будет только запустить класс, содержащий метод main (в нашем случае Main.class )
java Main
Вы должны получить следующий результат:
В случае шампанского Мы подошли к концу этого короткого 😅 урока. Надеюсь, это кому-то поможет.
Оригинал: “https://dev.to/martinsonuoha/classes-inheritance-packages-modularization-in-java-4llg”