
Добро пожаловать в объект -ориентированное хранилище программирования с Java ! Он предоставляет комплексный ресурс для изучения и изучения объектного программирования через Java Language.
Объектно -ориентированное программирование (OOP - OOP - OOP -Oriented программирование) - это популярная модель программирования, которая широко используется в разработке программного обеспечения. Он основан на понятиях «объектов», которые являются объектами, которые объединяют как данные (атрибуты), так и методы (поведение). OOP фокусируется на разработке программного обеспечения на основе интерактивных объектов, а не на процессе и логике, как в процессуальном программировании программирования.
Программирование объекта основано на 4 основных принципах, а именно: упаковке, наследование, полиморфизм и абстрактный. Каждый из этих принципов обеспечивает подход для решения проблем в разработке программного обеспечения и помогает более эффективно управлять исходным кодом.
1. Инкапсуляция : это концепция скрытия деталей внутреннего развертывания объекта, предотвращая непосредственные доступ к данным внутри данных. Упаковка помогает защитить данные и поведение объекта от нежелательного вмешательства и обеспечивает унифицированный интерфейс для взаимодействия с объектом.
// Lớp Employee (Nhân viên) chứa các thuộc tính: tên, tuổi, lương
public class Employee {
// Các biến dữ liệu riêng tư để ngăn chặn truy cập trực tiếp từ bên ngoài lớp
private String name ;
private int age ;
private double salary ;
// Constructor (hàm tạo) để khởi tạo các giá trị của đối tượng
public Employee ( String name , int age , double salary ) {
this . name = name ;
this . age = age ;
this . salary = salary ;
}
// Các phương thức getter để truy cập các biến dữ liệu
public String getName () {
return name ;
}
public int getAge () {
return age ;
}
public double getSalary () {
return salary ;
}
// Các phương thức setter để cập nhật giá trị của các biến dữ liệu
public void setName ( String name ) {
this . name = name ;
}
public void setAge ( int age ) {
this . age = age ;
}
public void setSalary ( double salary ) {
this . salary = salary ;
}
}
// Lớp Main để thực thi mã
public class Main {
public static void main ( String [] args ) {
// Tạo đối tượng của lớp Employee
Employee emp = new Employee ( "John Doe" , 30 , 50000 );
// Truy cập và cập nhật thông qua các phương thức getter và setter
System . out . println ( "Employee name: " + emp . getName ());
emp . setSalary ( 55000 );
System . out . println ( "Updated salary: " + emp . getSalary ());
}
} В этом примере name , age и salary переменных отмечены private , что означает, что они не могут быть непосредственно обращены за пределы внешней части Employee . Вместо этого, getName() , getAge() , getSalary() , setName() , setAge() и setSalary() предоставляются для доступа и обновления значения этих переменных, обеспечивая упаковку.
2. Наследование (наследование): наследование позволяет новому слою наследовать свойства и методы с существующего уровня. Этот новый слой может добавить или изменять компоненты наследования, чтобы удовлетворить свои собственные потребности, помогая повторно использовать и эффективно расширить исходный код.
// Lớp cơ sở (hay lớp cha): Employee
public class Employee {
private String name ;
private int age ;
// Constructor của lớp Employee
public Employee ( String name , int age ) {
this . name = name ;
this . age = age ;
}
// Getter và Setter
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public int getAge () {
return age ;
}
public void setAge ( int age ) {
this . age = age ;
}
// Phương thức để hiển thị thông tin
public void displayInfo () {
System . out . println ( "Name: " + name + ", Age: " + age );
}
}
// Lớp dẫn xuất (hay lớp con): Manager kế thừa từ Employee
public class Manager extends Employee {
private double salary ;
// Constructor của lớp Manager
public Manager ( String name , int age , double salary ) {
super ( name , age ); // Gọi constructor của lớp cơ sở (lớp cha)
this . salary = salary ;
}
// Phương thức mới của lớp Manager
@ Override
public void displayInfo () {
// Gọi phương thức displayInfo của lớp cơ sở (lớp cha)
super . displayInfo ();
System . out . println ( "Salary: " + salary );
}
}
public class Main {
public static void main ( String [] args ) {
// Tạo đối tượng Manager
Manager manager = new Manager ( "Alice Johnson" , 42 , 75000 );
manager . displayInfo (); // Hiển thị thông tin của Manager
}
}Employee - это базовый класс, содержащий базовую информацию, такую как имя и возраст.Manager является производным классом от Employee и добавляет атрибут salary .Manager использует ключевое слово, extends , чтобы наследовать от класса Employee . Конструктор Manager под названием super(name, age) ; Инициализировать свойства, унаследованные от класса Employee .displayInfo() перезаписан в классе Manager , чтобы добавить больше информации о зарплате, и вызовите метод displayInfo() базового класса, чтобы отобразить основную информацию.3. Полиморфизм : полиморфизм - это способность, в которой различные классы могут использоваться через один и тот же интерфейс. Метод может быть определен в базовом слое и заменен методами одного и того же имени в производных классах, что позволяет обрабатывать объекты через общий интерфейс, не зная их конкретного типа данных.
В Java полиморфизм экспрессируется с помощью метода перегрузки на вершину и перезарядки метода (перегрузка метода).
class Animal {
void speak () {
System . out . println ( "Animal speaks" );
}
}
// Lớp Dog (chó) kế thừa lớp Animal (động vật)
class Dog extends Animal {
// Lớp Dog ghi đè phương thức speak() của lớp cha
@ Override
void speak () {
System . out . println ( "Dog barks" );
}
}
// Lớp Cat (mèo) kế thừa lớp Animal (động vật)
class Cat extends Animal {
// Lớp Dog ghi đè phương thức speak() của lớp cha
@ Override
void speak () {
System . out . println ( "Cat meows" );
}
}
public class Main {
public static void main ( String [] args ) {
Animal myAnimal = new Animal ();
Animal myDog = new Dog ();
Animal myCat = new Cat ();
myAnimal . speak (); // Prints "Animal speaks"
myDog . speak (); // Prints "Dog barks"
myCat . speak (); // Prints "Cat meows"
}
} В этом примере метод speak() перезаписан в слоях Dog и Cat . При вызове метода speak() на объекте ребенка Java определяет, какой метод будет вызван во время работы, в зависимости от типа объекта, который появляется эталонная переменная.
class Printer {
// In chuỗi
void print ( String data ) {
System . out . println ( "String: " + data );
}
// In số nguyên
void print ( int data ) {
System . out . println ( "Integer: " + data );
}
// In số thực
void print ( double data ) {
System . out . println ( "Double: " + data );
}
}
public class Main {
public static void main ( String [] args ) {
Printer printer = new Printer ();
// Gọi phương thức print nạp chồng
printer . print ( "Hello, World!" );
printer . print ( 123 );
printer . print ( 98.76 );
}
}Printer имеет три версии метода print , каждая из которых обрабатывает конкретный тип данных: String , int и double .print Java определяет соответствующую версию на основе типа данных аргумента передачи.Полиморфизм также четко экспрессируется с помощью механизма использования раздела. Интерфейс в Java - это способ достижения более высокого полиморфизма, позволяя слою развернуть много интерфейсов и интерфейс, который может быть развернут различными уровнями.
Предположим, что у нас есть CanFly и два слоя Bird и Airplane оба реализуют этот интерфейс:
interface CanFly {
void fly ();
}
class Bird implements CanFly {
public void fly () {
System . out . println ( "The bird flaps its wings to fly." );
}
}
class Airplane implements CanFly {
public void fly () {
System . out . println ( "The airplane turns on its engines to fly." );
}
}
public class TestPolymorphism {
public static void main ( String [] args ) {
CanFly myBird = new Bird ();
CanFly myAirplane = new Airplane ();
myBird . fly (); // Output: The bird flaps its wings to fly.
myAirplane . fly (); // Output: The airplane turns on its engines to fly.
}
}CanFly определяет метод fly() без предоставления тела тела.Bird , так и Airplane развертывают метод fly() по -своему.myBird и myAirplane ссылаются через интерфейс CanFly , и при вызове метода fly() полиморфизм позволяет нам не заботиться об объекте объекта; Мы только знаем, что они могут летать.4. Абстракция : Аннотация позволяет программистам сосредоточиться на том, что объект делает без заботы о том, как это сделать. Он создает базовый класс, который описывает общий интерфейс, который будут реализованы производные классы, упрощая управление сложностью системы.
В Java реферат может быть сделан двумя способами:
Абстрактный класс - это объект, который не может быть создан и может содержать абстрактные методы без тела.
abstract class Animal {
// Phương thức trừu tượng
abstract void makeSound ();
// Phương thức bình thường
void breathe () {
System . out . println ( "Breathing..." );
}
}
class Dog extends Animal {
// Triển khai phương thức trừu tượng trong lớp con
void makeSound () {
System . out . println ( "Bark" );
}
}
public class Main {
public static void main ( String [] args ) {
Animal myDog = new Dog ();
myDog . makeSound (); // In ra "Bark"
myDog . breathe (); // In ra "Breathing..."
}
}Animal - это абстрактный слой с абстрактными методами makeSound() .Dog является унаследованным классом от Animal и должна обеспечивать конкретное развертывание для абстрактного метода makeSound() .Интерфейс (интерфейс) может содержать только абстрактные методы без развертывания.
interface Vehicle {
void start ();
void stop ();
}
class Car implements Vehicle {
public void start () {
System . out . println ( "Car starting" );
}
public void stop () {
System . out . println ( "Car stopping" );
}
}
class Bike implements Vehicle {
public void start () {
System . out . println ( "Bike starting" );
}
public void stop () {
System . out . println ( "Bike stopping" );
}
}
public class Main {
public static void main ( String [] args ) {
Vehicle myCar = new Car ();
Vehicle myBike = new Bike ();
myCar . start (); // In ra "Car starting"
myCar . stop (); // In ra "Car stopping"
myBike . start (); // In ra "Bike starting"
myBike . stop (); // In ra "Bike stopping"
}
} Здесь Vehicle - это интерфейс, определяющий два абстрактных метода: start() и stop() . Услой Car и Bike развертывают этот интерфейс и обеспечивают конкретное развертывание для каждого метода.
Сходство:
Различия:
| Аннотация класс | Интерфейс | |
|---|---|---|
| Цель | - Часто используется, когда в подразделе есть много общих функций и нуждаются в общем месте для размещения кода, который можно использовать повторно. -Помогите определить базовый шаблон для суб -слоя, убедитесь, что весь подзадачный класс наследует его, чтобы следовать общему дизайну. | - часто используется для определения контракта для функции без заботы. - Идеально подходит для функций, которые могут быть реализованы очень разными. - Хорошо для определения методов сбора, которые может выполнить класс. |
| Развертывание | - Может содержать как абстрактные методы (без тела), так и не -абстрактные методы (с телом). - Абстрактные классы также могут содержать поля данных и конструкторы. | - Первоначально это позволяет только определение абстрактных методов без тела. - Начиная с Java 8, интерфейс также позволяет определять методы тела с помощью методов по умолчанию и статических методов. |
| Многопользо | - Класс может наследовать только от одного абстрактного слоя. - Это ограничивает гибкость многопользой, как на границе раздела. | - Java позволяет слое выполнять несколько интерфейсов одновременно, обеспечивая многопользовательскую форму. |
| Челюсть | - Могут быть ограничения, помогающие установить начальные условия для класса. | - Там нет конструктора. |
| Поле данных | - В отличие от интерфейса, абстрактные классы могут иметь поля данных, которые не являются статикой и окончательными. - У суб -слоя могут быть отдельные атрибуты, унаследованные от абстрактного слоя. | - Интерфейс не поддерживает поле данных не является статичным и окончательным. - Все переменные, объявленные в интерфейсе, автоматически считаются публичным статическим финалом. |
Объект -ориентированное программирование приносит много выдающихся преимуществ в разработке программного обеспечения, что делает его одной из основных моделей проектирования и программирования в индустрии информационных технологий. Вот преимущества этого:
Повторное использование кода : OOP позволяет программистам повторно использовать исходный код с помощью механизма наследования. Слой ребенка может унаследовать функции от отца класса, не переписывая этот код. Это помогает сократить работу по программированию, минимизировать потенциальные ошибки и ускорить разработку программного обеспечения.
Легко поддерживать и исправлять ошибки : структура упаковки в ООП помогает скрыть детали развертывания, предоставляя только интерфейс (интерфейс), необходимый для пользователей. Это облегчает обслуживание и обновление системы, потому что изменение внутри объекта не влияет на другие объекты.
Практическое моделирование : ООП позволяет программированию моделировать реальные объекты в виде объектов программного обеспечения, что облегчает понимание и управление исходным кодом. Использование объектов, таких как выполнение данных и поведения в реальном мире, помогает разрабатывать программное обеспечение, чтобы стать более интуитивно понятным и ближе к программисту.
Расширение : благодаря возможности наследования и упаковки, ООП легко расширить. Новый слой может быть создан с наследством от одного или нескольких слоев, которые существуют, не влияя на эти слои. Это помогает системе гибко расти и быстро адаптироваться к новым потребностям.
Безопасность : Упаковка не только помогает скрыть детали реализации, но и обеспечивает уровень безопасности. Данные внутри объекта защищены от внешнего прямого доступа, обеспечивая целостность и безопасность данных.
Java является одним из самых популярных языков программирования, используемых для обучения объектному программированию по правдоподобным причинам.
Java -это чистый объект -ориентированный язык , что означает, что все в Java -это объект или класс. Такие понятия, как наследование, упаковка, полиморфизм и реферат, полностью встроены в язык. Это помогает учащимся легко получить доступ и практиковать принципы ООП естественным образом во время программирования.
Java имеет четкий и простой -понятный синтаксис. Синтаксис Java основан на C/C ++, но он удалял некоторые сложные функции, такие как прямой курсор, что делает его идеальным языком для обучения начинающих. Устранение этих сложных функций помогает учащимся сосредоточиться на понимании основных концепций ООП, не увязая в запутанных деталях.
Java является независимым языковым фондом , может работать на любой операционной системе с виртуальной машиной Java (JVM). Это означает, что программы Java могут последовательно разрабатывать и реализовывать на разных платформах без изменения кода. Эта гибкость идеально подходит для учебной среды, где учащиеся и учителя могут использовать различные аппаратные и программные обеспечения.
Используя этот архив для обучения, вы должны следовать принципу аранжировки, упомянутого ниже. Прочитайте элементы в соответствии с правилами сверху вниз, первые части станут основой следующего контента. В частности, для приложения вы можете обратиться в любое время, в нем есть несколько книг, которые я использую для разработки этого архива.
Чтобы синхронизировать и быть простым в управлении, основной слой содержит основной метод для выполнения кода как такого же, как содержание урока. Другие классы на уроке, чтобы проиллюстрировать. Например, урок о интерфейсе состоит в
Interface.javaимеет классы:Movable,Trackable,Drone,Interface,Movable,TrackableклассыDroneимеют эффект интерпретации для знания урока, а классыInterfaceдля выполнения кода из предыдущих классов IT.
Этот элемент почти тот же порядок, что и мое хранилище: структура данных и алгоритм с использованием C/C ++ , за исключением того, что написано на языке Java. Между двумя языками будут некоторые различия, читатели могут сравнить их сами.
Java - это как язык программирования, так и перевод (и интерпретируемый . В Java исходный код переводится в Bytecode, который представляет собой простые двоичные индикаторы, которые работают как компьютерный код для компьютеров. Однако, в отличие от C или C ++, байт -код Java не является нативным машинным кодом для любого конкретного процессора, а для виртуальной машины Java (JVM), общей платформы для всех систем.
Этот байт -код был затем переведен и выполнен виртуальной машиной Java, как если бы это был нативный машинный код. JVM работает как активная операционная система в управлении командами памяти и обработки, обеспечивая безопасность и мобильные устройства кода. Все характеристики языка Java четко определены, независимо от конкретной системы базовой системы, помогая Java иметь возможность запускать гомогенную на многих различных платформах без редактирования кода.
JVM обеспечивает безопасную среду применения, где выполняет функции, аналогичные операционной системе. Он управляет памятью, выполняя команды на основе стеков и обработки типов воды. Это сводит к минимуму риски безопасности и увеличивает стабильность приложения.
Будь то похоже на C и C ++ с точки зрения синтаксиса, Java не является прямым потоком C или следующей версией C ++. Java имеет больше общего с динамическими языками, такими как SmallTalk и LISP, а не C. Сходство останавливается только на внешнем синтаксисе, например, использует множество брекетов и полуколонов. Ява наследует философию C хорошего языка, который должен быть компактным, легко запомнить, но расширять словарь через пакеты классов Java.
Языки сценариев, такие как Perl, Python и Ruby, очень популярны, потому что они подходят для безопасных и сетевых приложений. Тем не менее, большинство языков сценариев не предназначены для серьезных крупных программирования. Они часто не подходят для крупных или сложных проектов из -за свободной структуры программы и простой системы данных.
Java предоставляет безопасную платформу для разработки средств более высокого уровня и даже других языков, сочетая простоту и функции Java, которые позволяют быстро и легко разработать приложения. Java также узнала из функций SmallTalk и улучшает их, особенно при использовании набора тестов ByteCode для обеспечения точности кода кампании, помогая повысить производительность и обеспечить безопасность, чем SmallTalk.
Java предназначена для безопасного языка не только против программных ошибок, но и общих проблем в дизайне и программировании. Java предлагает много защитных слоев, от теста на безопасность кода, прежде чем перейти к тому, как загружается класс загрузчика, механизм нагрузки на байт -кодировке складывания Java, создавая «стену» вокруг ненадежных классов. Эти функции являются основой для политик безопасности на высоком уровне, позволяющих или не разрешать различные виды действий в каждом приложении.
Java начинается с «белой доски» и, следовательно, может избежать сложных или противоречивых особенностей на других языках. Например, Java не позволяет программистам регенерировать операторов (таких как + сено -), нет денег, обрабатывающей деньги, такие как макросы или #define, вещи, которые часто используются в других языках для поддержки зависимости от платформы.
Java также предоставляет четкую структуру пакетов для организации файлов классов, помогая процессу компиляции эффективно выполнять некоторые функции традиционного инструмента. Вся информация о типе данных сохраняется в скомпилированных классах Java без необходимости избыточных файлов заголовка источника, как в C/C ++. Это облегчает чтение кода Java и меньше контекста.
Java поддерживает только наследство (каждый класс имеет только один класс «отца»), но позволяет наследовать многие интерфейсы. Интерфейс в Java, аналогичный абстрактному слою в C ++, определяет поведение объекта без защиты его выполнения. Это мощный механизм, который позволяет разработчику определить «договор» поведения объекта, который можно использовать и ссылаться на любое конкретное выполнение объекта.
Java устраняет использование курсоров, которые могут ссылаться на любую область памяти и добавить автоматически сбор мусора и сегмент высокого уровня. Эти функции помогают устранить многие проблемы, связанные с безопасностью, конверсией и оптимизацией, с которыми часто сталкиваются другие языки. В Java больше не используемые субъекты автоматически восстанавливают память, минимизируют ручные ошибки управления памятью.
Java не использует традиционный курсор, а вместо этого является более плотной и безопасной ссылкой. Субъекты в Java, за исключением примитивных типов, доступны через ссылку. Это позволяет безопасно создавать сложные структуры данных в типе данных без рисков, связанных с курсором в C/C ++.
Java предназначена для интеллектуального и эффективного обращения с ошибками благодаря сильным механизму управления исключениями. В Java ошибки не только захватываются и обрабатываются в определенном месте в программе через кодовый блок «Catch», но и упаковываются в исключения. Каждый из этих объектов дает информацию о причине ошибки, что позволяет программистам легко понять и обрабатывать ошибки. Перевод Java требует, чтобы метод заявил о том, что он может возникнуть, или немедленно обрабатывать их. Это помогает подвести информацию об ошибке на тот же уровень с другой информацией, такой как тип возврата данных или метод метода. Таким образом, при программировании вы можете предсказать и подготовиться к возможным ситуациям, гарантируя, что ваше приложение будет работать более стабильным и безопаснее.
В программном обеспечении и разработке Конвенция имен представляет собой набор правил выбора имен переменных, челюстей, классов и других объектов в исходном коде. Конвенция об идентификации облегчает чтение исходного кода, простым для понимания и проще в обслуживании. Мое хранилище строго соответствует этому соглашению, упомянутому ниже.
Класс: имя класса всегда начинается с печатной буквы (Pascalcase). Если имя класса состоит из многих слов, каждое слово также должно начинаться с цветочной печати. Например: Student , Car , ColorChooser .
Интерфейс: Как и класс, имя интерфейса также использует Pascalcase. Часто имя интерфейса начнется с заглавных букв, таких как I или использует тупой/суффикс, такой как able или ible чтобы описать эту функцию, такую как Runnable , Accessible .
Метод метода всегда начинается в обычных буквах и следует за Cemelcase. Имя метода обычно представляет собой глаголы или глагольные фразы, описывающие действие, которое выполняет метод. Например: getName() , calculateTotalWidth() .
Имя переменной также должно начинаться с обычных букв и следовать Camelcase. Имя переменной должно быть ясным и описать значение, которое они представляют. Например: height , numberOfStudents .
Пример класса Dog :
package com . example . animals ;
/**
* A generic Dog class that can be used as a base class for specific breeds.
*/
public class Dog {
private String name ;
private int age ;
/**
* Constructor for Dog class.
*
* @param name The name of the dog.
* @param age The age of the dog.
*/
public Dog ( String name , int age ) {
this . name = name ;
this . age = age ;
}
/**
* Returns the name of the dog.
*
* @return The name of the dog.
*/
public String getName () {
return name ;
}
/**
* Sets the name of the dog.
*
* @param name New name for the dog.
*/
public void setName ( String name ) {
this . name = name ;
}
/**
* Returns the age of the dog.
*
* @return The age of the dog.
*/
public int getAge () {
return age ;
}
/**
* Sets the age of the dog.
*
* @param age New age for the dog.
*/
public void setAge ( int age ) {
this . age = age ;
}
/**
* Provides a string representation of the dog.
*
* @return A string describing the dog's details.
*/
@ Override
public String toString () {
return "Dog[name=" + name + ", age=" + age + "]" ;
}
}| Показания доступа | публичный | Защищен | по умолчанию | Частный | |
|---|---|---|---|---|---|
| Вместе с пакетом | Внутри класса | Иметь | Иметь | Иметь | Иметь |
| Суб -класс | Иметь | Иметь | Иметь | Нет | |
| Другой класс | Иметь | Иметь | Иметь | Нет | |
| Другой пакет | Суб -класс | Иметь | Иметь | Нет | Нет |
| Другой класс | Иметь | Нет | Нет | Нет | |
Unified Modeling Language (UML) - это стандартный инструмент графического моделирования, предназначенный для наброски, описания и документов о различных аспектах программного обеспечения приложения. Это особенно полезно в области программирования объекта, потому что он обеспечивает интуитивно понятный способ показать классы, объекты и отношения между ними. UML включает в себя множество различных типов диаграмм, но в контексте программы -ориентированного объекта, классовые диаграммы (классовые диаграммы) и интерактивные диаграммы (диаграммы взаимодействия) являются двумя наиболее часто используемыми типами.
UML позволяет программистам описать структуру системы, используя классовые диаграммы. Эта диаграмма показывает классы в системе, атрибуты, их методы и, что наиболее важно, взаимосвязь между такими классами, как наследование, связь, синтез и комбинация. Это помогает программистам понять и разрабатывать систему более систематически.
После того, как диаграмма UML будет завершена, ее можно использовать в качестве основы для написания исходного кода. В ООП передача из диаграммы слоя в исходный код (обычно Java, C#или C ++) является довольно прямой из -за сходства между понятиями, описанными в UML, и структурой слоя в этих языках программирования.
UML помогает четко определить отношения между объектами, подчеркнуть путь связи и взаимодействия между ними через диаграмму последовательности (диаграммы последовательности) и диаграмму сотрудничества (диаграммы сотрудничества). Это помогает программистам понять поток данных и управление в приложении.
Прежде чем начать писать коды, UML помогает группе разработчиков может обнаружить и исправить проблемы с проектированием. Единство в использовании UML также помогает участникам в группе легко понять идеи друг друга, тем самым повышая эффективность рабочей координации.
UML предоставляет полные документы для программного обеспечения, что очень полезно на этапе обслуживания и обновления программного обеспечения. Хорошая диаграмма UML может помочь новым людям, участвующим в проекте, быстро захватить структуру и функцию системы.
Диаграмма класса (классовая диаграмма) является одним из типов диаграмм, используемых в UML, и играет важную роль в моделировании программной системы. Диаграмма класса предоставляет обзор структуры приложения, отображая системные слои, их атрибуты и методы, а также взаимосвязь между этими слоями. Эти отношения могут включать в себя: ссылку (ассоциация), наследование (наследование), правоприменение (реализация), зависимость, отречение, состав.
Класс представляет концепцию, которая включает статус (атрибут) и поведение (метод). Каждый атрибут имеет один тип. Каждый метод имеет подпись. Имя класса - единственная обязательная информация.
Рассмотрим следующий пример:

Эта диаграмма UML соответствует классовому Animal в коде следующим образом:
public class Animal {
// Các thuộc tính của lớp
public String name ; // Biến thành viên công khai cho tên
private int age ; // Biến thành viên riêng tư cho tuổi
private String species ; // Biến thành viên riêng tư cho loài
// Phương thức getter cho thuộc tính name
public String getName () {
return name ;
}
// Phương thức setter cho thuộc tính name
public void setName ( String name ) {
this . name = name ;
}
} Символы + , - и # и # и # и имена методов в слое указывают уровень емкости доступа атрибута и метода. Конкретно:
+ указывает атрибут или метод общественности (общедоступный).- указывая на свойства или методы конфиденциальности (частные).# указывает на свойство или защитный метод (защищен).
Flyable с помощью метода fly() , класс Bird может выполнить этот интерфейс, развернув метод fly() .School классе может быть много объектов класса Teacher , но учителя все еще существуют независимо от школы.House может содержать много предметов Room . Когда House будет отменен, Room также будут отменены.| Наследование | Собирать | |
|---|---|---|
| Определять | - Наследование - это механизм, при котором один слой (называемый подбаллом) может наследовать природу и метод другого слоя (называемый родительским классом). - Позвольте подразделению повторно использовать код отца без переписывания. - Соответствует отношению «is-a». | - Элемент - это форма «там» отношения между двумя слоями. - Указывает отношение, в котором объект может содержать или ссылаться на другие объекты, но эти два субъекта могут существовать независимо. - Соответствует отношению «has-a». |
| Цель | - повторно используйте код и улучшите модуль приложения. - Также поддерживают полиморфизм, позволяя методу ребенка перезаписать или расширять метод родительского класса. - Например: класс животных имеет метод перемещения (), классы птиц и рыбы могут наследовать метод использования животных и использовать или переопределить Move () в соответствии с их движущейся природой. | - Представление взаимосвязи между объектами, где объекты могут иметь частичную связь друг с другом, но не полностью зависеть друг от друга. - Помогите повысить гибкость в структуре данных и управлять сложными объектами. - Например, квадратный слой может иметь объекты точечного слоя. Каждый квадрат состоит из четырех объектов точечного слоя (указывая на вершины), но точки могут существовать независимо без пика квадрата. |
| Зависимость | - Суб -класс сильно зависит от класса отца, потому что он напрямую использует свойства и методы отца. | - Соответствующие предметы могут существовать независимо; Они не сильно зависят друг от друга. |
| Способность | - Расширить или настроить слой отца. - Моделирование децентрализованных отношений. | - Управление связанными объектами. - Моделирование физических отношений. |
Рассмотрим следующий пример:

Развертывание этой диаграммы UML в Java выглядит следующим образом:
public class Person {
private String name ;
private int age ;
private Address address ; // Liên kết sử dụng lớp Address
public Person ( String name , int age , Address address ) {
this . name = name ;
this . age = age ;
this . address = address ;
}
// Getter và Setter cho các thuộc tính
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public int getAge () {
return age ;
}
public void setAge ( int age ) {
this . age = age ;
}
public Address getAddress () {
return address ;
}
public void setAddress ( Address address ) {
this . address = address ;
}
}
// Định nghĩa lớp Student kế thừa từ Person
public class Student extends Person {
public Student ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Teacher kế thừa từ Person
public class Teacher extends Person {
public Teacher ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Staff kế thừa từ Person
public class Staff extends Person {
public Staff ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Address
public class Address {
private String street ;
private String city ;
private String country ;
public Address ( String street , String city , String country ) {
this . street = street ;
this . city = city ;
this . country = country ;
}
// Getter và Setter cho các thuộc tính
public String getStreet () {
return street ;
}
public void setStreet ( String street ) {
this . street = street ;
}
public String getCity () {
return city ;
}
public void setCity ( String city ) {
this . city = city ;
}
public String getCountry () {
return country ;
}
public void setCountry ( String country ) {
this . country = country ;
}
}
// Định nghĩa lớp Department chứa Teacher và Course
public class Department {
private String name ;
private List < Teacher > teachers ; // Aggregation
private List < Course > courses ; // Composition
public Department ( String name ) {
this . name = name ;
this . teachers = new ArrayList <>();
this . courses = new ArrayList <>();
}
// Phương thức thêm giáo viên và khóa học
public void addTeacher ( Teacher teacher ) {
teachers . add ( teacher );
}
public void addCourse ( Course course ) {
courses . add ( course );
}
}
// Định nghĩa lớp Course
public class Course {
private String courseName ;
private List < Teacher > teachers ; // Association
public Course ( String courseName ) {
this . courseName = courseName ;
this . teachers = new ArrayList <>();
}
public void addTeacher ( Teacher teacher ) {
teachers . add ( teacher );
}
}
// Định nghĩa interface Maintainable
public interface Maintainable {
void maintain ();
}
// Định nghĩa lớp School
public class School implements Maintainable {
private String name ;
private List < Department > departments ; // Composition
public School ( String name ) {
this . name = name ;
this . departments = new ArrayList <>();
}
public void addDepartment ( Department department ) {
departments . add ( department );
}
// Triển khai phương thức từ interface Maintainable
@ Override
public void maintain () {
System . out . println ( "Maintaining the school facilities..." );
// Logic bảo trì cơ sở vật chất có thể được thực hiện ở đây
}
}