
Java와 함께 Object -Oriented Programming Storage 에 오신 것을 환영합니다! Java 언어를 통해 객체 지향 프로그래밍을 탐색하고 배울 수있는 포괄적 인 자원을 제공합니다.
객체 - 지향 프로그래밍 (OOP -OOP -OOP- 중심 프로그래밍)은 소프트웨어 개발에 널리 사용되는 인기있는 프로그래밍 모델입니다. 그것은 데이터 (속성)와 방법 (동작)을 결합하는 엔티티 인 "Objects"의 개념을 기반으로합니다. 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 계층은 키워드를 사용하여 Employee 클래스에서 상속 extends . super(name, age) 라고하는 Manager 의 생성자; 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 와 2 층 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를 사용하면 레이어가 여러 인터페이스를 동시에 수행하여 다중 단위 형식을 제공합니다. |
| 턱 | - 제약이있을 수 있으며, 클래스의 초기 조건을 설정하는 데 도움이됩니다. | - 생성자가 없습니다. |
| 데이터 필드 | - 인터페이스와 달리 추상 클래스에는 정적 및 최종이 아닌 데이터 필드가있을 수 있습니다. - 하위 층은 추상 레이어에서 상속 된 별도의 속성을 가질 수 있습니다. | - 인터페이스는 데이터 필드가 정적이며 최종적이지 않습니다. - 인터페이스에 선언 된 모든 변수는 자동으로 공개 정적 결승전으로 간주됩니다. |
Object -Oriented Programming은 소프트웨어 개발에서 많은 뛰어난 이점을 제공하여 정보 기술 산업의 주요 설계 및 프로그래밍 모델 중 하나입니다. 그것의 장점은 다음과 같습니다.
코드 재사용 : OOP를 사용하면 프로그래머가 상속 메커니즘을 통해 소스 코드를 재사용 할 수 있습니다. 아동의 층은 해당 코드를 다시 작성하지 않고 아버지 클래스의 기능을 상속받을 수 있습니다. 이를 통해 프로그래밍 작업을 줄이고 잠재적 오류를 최소화하며 소프트웨어 개발 속도를 높이는 데 도움이됩니다.
오류를 쉽게 유지하고 수정할 수 있습니다 : OOP의 포장 구조는 배포 세부 정보를 숨기고 사용자에게 필요한 인터페이스 (인터페이스) 만 제공하는 데 도움이됩니다. 객체 내부를 변경해도 다른 객체에 영향을 미치지 않기 때문에 시스템 유지 관리 및 업데이트가 더 쉬워집니다.
실제 모델링 : OOP를 사용하면 프로그래밍을 통해 소프트웨어 객체 형태로 실제 엔티티를 모델링하여 소스 코드를 쉽게 이해하고 관리 할 수 있습니다. 실제 세계에서 데이터 및 행동 수행과 같은 객체를 사용하면 소프트웨어가 더 직관적이고 프로그래머와 더 가까워 지도록하는 데 도움이됩니다.
확장 : 상속 및 포장 기능 덕분에 OOP는 쉽게 확장 할 수 있습니다. 새로운 층은 해당 층에 영향을 미치지 않고 존재하는 하나 이상의 층으로부터의 상속으로 생성 될 수 있습니다. 이를 통해 시스템이 유연하게 성장하고 새로운 요구에 빠르게 적응할 수 있습니다.
보안 : 포장은 구현 세부 사항을 숨기는 데 도움이 될뿐만 아니라 보안 계층도 제공합니다. 객체 내부의 데이터는 외부 직접 액세스로부터 보호되어 데이터의 무결성과 안전성을 보장합니다.
Java는 그럴듯한 이유로 객체 지향 프로그래밍을 가르치는 데 사용되는 가장 인기있는 프로그래밍 언어 중 하나입니다.
Java는 순수한 객체 지향 언어 로 Java의 모든 것이 대상 또는 클래스입니다. 상속, 포장, 다형성 및 추상과 같은 개념은 언어로 완전히 내장되어 있습니다. 이를 통해 학습자는 프로그래밍 중에 자연스럽게 OOP 원칙에 쉽게 액세스하고 연습 할 수 있습니다.
Java는 명확하고 쉽게 이해하기 쉬운 구문을 가지고 있습니다. Java의 구문은 C/C ++를 기반으로하지만 Direct Cursor와 같은 복잡한 기능을 제거하여 초보자를 가르치는 데 이상적인 언어가되었습니다. 이러한 복잡한 기능을 제거하면 학습자들은 혼란스러운 세부 사항에 휩싸이지 않고 OOP의 핵심 개념을 이해하는 데 집중할 수 있습니다.
Java는 독립 언어 재단이며 JVM (Java) 가상 머신을 사용하여 모든 운영 체제에서 실행할 수 있습니다. 이는 Java 프로그램이 코드를 변경하지 않고 다른 플랫폼에서 일관되게 개발하고 구현할 수 있음을 의미합니다. 이 유연성은 학생과 교사가 다양한 하드웨어와 소프트웨어를 사용할 수있는 학습 환경에 이상적입니다.
학습을 위해이 아카이브를 사용하는 동안 아래에 언급 된 배열 원칙을 따라야합니다. 위에서 아래로 규칙에 따라 항목을 읽으면 첫 번째 부분은 다음 컨텐츠의 기초가됩니다. 특히 언제든지 참조 할 수있는 부록 의 경우이 아카이브를 디자인하는 데 사용하는 책이 포함되어 있습니다.
동기화하고 제어하기 쉬우려면 메인 레이어에는 코드를 레슨 내용과 동일하게 실행하는 기본 메소드가 포함되어 있습니다. 수업의 다른 수업을 설명합니다. 예를 들어, 인터페이스에 대한 교훈은
Interface.java에 있습니다. Java는Movable,Trackable,Drone,Interface,Movable,Trackable,Drone클래스에는 수업 지식을 해석하는 효과가 있으며,Interface클래스에서 이전 클래스에서 코드를 실행하는 데 효과가 있습니다.
이 항목은 내 스토리지와 거의 같은 순서입니다. 자바 언어로 작성된 것을 제외하고는 C/C ++를 사용하는 데이터 구조 및 알고리즘입니다 . 두 언어 사이에는 몇 가지 차이가있을 것이며 독자는 스스로 비교할 수 있습니다.
Java는 프로그래밍 언어와 번역 (및 해석) 입니다. Java에서 소스 코드는 바이트 코드로 변환되며, 이는 컴퓨터의 컴퓨터 코드와 같은 간단한 이진 표시기입니다. 그러나 C 또는 C ++와 달리 Java의 Bytecode는 특정 프로세서의 기본 기계 코드가 아니라 JVM (Java) 가상 기계의 일반적인 플랫폼입니다.
이 바이트 코드는 마치 기본 기계 코드 인 것처럼 Java Virtual Machine에서 번역 및 실행되었습니다. JVM은 메모리 및 처리 명령을 관리하는 능동적 인 운영 체제처럼 작동하여 코드의 안전 및 모바일을 보장합니다. Java 언어의 모든 특성은 기본 시스템의 특정 시스템에 관계없이 명확하게 정의되므로 Java는 코드 편집없이 많은 다른 플랫폼에서 균질하게 실행할 수 있습니다.
JVM은 안전한 시행 환경을 제공하며 운영 체제와 유사한 기능을 수행합니다. 메모리, 스택을 기반으로 명령을 실행하며 물 유형을 처리합니다. 이는 보안 위험을 최소화하고 응용 프로그램의 안정성을 증가시킵니다.
구문 측면에서 C 및 C ++와 비슷한 것처럼 보이든 Java는 C의 직접 후손이 아니거나 C ++의 다음 버전이 아닙니다. Java는 C보다 Smalltalk 및 LISP와 같은 동적 언어와 더 공통점이 있습니다. 유사성은 많은 브레이스와 세미콜론을 사용하는 것처럼 외부 구문에서만 멈 춥니 다. Java는 C의 좋은 언어의 철학을 간단하고 기억하기 쉽지만 Java 클래스 패키지를 통해 어휘를 확장해야합니다.
Perl, Python 및 Ruby와 같은 스크립트 언어는 안전하고 네트워크 응용 프로그램에 적합하기 때문에 매우 인기가 있습니다. 그러나 대부분의 스크립트 언어는 심각한 대규모 스케일 프로그래밍을 위해 설계되지 않았습니다. 느슨한 프로그램 구조와 간단한 데이터 시스템으로 인해 크거나 복잡한 프로젝트에 적합하지 않습니다.
Java는 더 높은 레벨 프레임 워크 및 기타 언어를 개발할 수있는 안전한 플랫폼을 제공하여 응용 프로그램을 신속하고 쉽게 개발할 수있는 Java의 단순성과 기능을 결합합니다. Java는 또한 SmallTalk의 기능에서 배우고 특히 바이트 코드 테스트 세트를 사용하여 캠페인 코드의 정확성을 보장하고 SmallTalk보다 성능을 향상시키고 안전을 보장하는 데 도움이됩니다.
Java는 소프트웨어 오류뿐만 아니라 설계 및 프로그래밍의 일반적인 문제에 대해서도 안전한 언어로 설계되었습니다. Java는 코드의 안전 테스트에서 클래스 로더가로드되는 방식, Java 해석의 바이트 코드로드 메커니즘으로 신뢰할 수없는 클래스 주변의 "벽"을 만듭니다. 이러한 기능은 각 애플리케이션에서 다양한 유형의 활동을 허용하거나 허용하지 않는 높은 수준의 보안 정책의 기초입니다.
Java는 "White Board"에서 시작하여 다른 언어로 복잡하거나 논쟁의 여지가있는 기능을 피할 수 있습니다. 예를 들어, Java는 프로그래머가 운영자 (예 : + hay-)를 재생하는 것을 허용하지 않으며, 매크로 또는 #Define 진술과 같은 돈을 처리하는 돈은 플랫폼에 대한 의존성을 지원하기 위해 다른 언어로 자주 사용되는 것들을 처리 할 수 없습니다.
Java는 또한 클래스 파일을 구성하는 명확한 패키지 구조를 제공하여 컴파일 프로세스가 전통적인 Make -Made 도구의 일부 기능을 효과적으로 처리 할 수 있도록 도와줍니다. 모든 데이터 유형 정보는 C/C ++에서와 같이 초과 소스 제목 파일이 필요하지 않고 컴파일 된 Java 클래스에서 보존됩니다. 이로 인해 Java 코드를 쉽게 읽을 수 있고 컨텍스트가 줄어 듭니다.
Java는 상속 만 지원합니다 (각 클래스에는 하나의 "아버지"클래스가 하나만 있습니다). 그러나 많은 인터페이스를 상속 할 수 있습니다. C ++의 추상층과 유사한 Java의 인터페이스는 실행을 방어하지 않고 객체의 동작을 식별합니다. 이것은 개발자가 특정 객체 실행에 독립적으로 사용하고 참조 할 수있는 객체의 동작의 "계약"을 정의 할 수있는 강력한 메커니즘입니다.
Java는 메모리 영역을 참조하고 자동으로 쓰레기 수집 및 높은 레벨 세그먼트를 추가 할 수있는 커서의 사용을 제거합니다. 이러한 기능은 다른 언어가 종종 발생하는 안전, 전환 및 최적화와 관련된 많은 문제를 제거하는 데 도움이됩니다. Java에서는 더 이상 사용되지 않은 피험자가 메모리를 자동으로 복구하고 수동 메모리 관리 오류를 최소화합니다.
Java는 전통적인 커서를 사용하지 않고 대신 더 빡빡하고 안전합니다. 원시 유형을 제외한 Java의 피험자는 참조를 통해 액세스합니다. 이를 통해 C/C ++의 커서와 관련된 위험이없는 데이터 유형에 복잡한 데이터 구조를 안전하게 구축 할 수 있습니다.
Java는 강력한 예외 관리 메커니즘 덕분에 현명하고 효과적인 방식으로 오류를 처리하도록 설계되었습니다. Java에서는 오류는 "Catch"코드 블록을 통해 프로그램의 특정 장소에서 캡처 및 처리 될뿐만 아니라 예외에도 포장됩니다. 이러한 각 객체는 오류의 원인에 대한 정보를 제공하여 프로그래머가 오류를 올바르게 이해하고 처리 할 수 있습니다. Java 번역은이 방법이 발생할 수있는 예외를 선언하거나 즉시 처리해야합니다. 이렇게하면 오류 정보를 반환 데이터 유형 또는 메소드 메소드와 같은 다른 정보와 함께 오류 정보를 동일한 수준으로 가져 오는 데 도움이됩니다. 따라서 프로그래밍시 가능한 상황을 예측하고 준비하여 응용 프로그램이보다 안정적이고 안전하게 작동하도록합니다.
소프트웨어 프로그래밍 및 개발에서 이름 지정 컨벤션은 소스 코드에서 변수, 턱, 클래스 및 기타 객체의 이름을 선택하는 규칙 모음입니다. 식별 규칙을 통해 소스 코드를 쉽게 읽을 수 있고 이해하기 쉽고 유지 관리가 더 쉽습니다. 내 스토리지는 아래에 언급 된이 컨벤션을 엄격히 준수합니다.
클래스 : 클래스 이름은 항상 인쇄 된 문자 (Pascalcase)로 시작합니다. 클래스 이름이 많은 단어로 구성되면 각 단어는 꽃 인쇄로 시작해야합니다. 예 : Student , Car , ColorChooser .
인터페이스 : 클래스와 마찬가지로 인터페이스의 이름도 Pascalcase를 사용합니다. 종종 인터페이스 이름은 I 와 같은 대문자로 시작하거나 멍청한/접미사와 같은 멍청한/접미사를 사용하여 ible able , Runnable Accessible 기능과 같은 기능을 설명합니다.
이 방법의 방법은 항상 일반 문자로 시작하여 Camelcase를 따릅니다. 메소드 이름은 일반적으로 메소드가 수행하는 동작을 설명하는 동사 또는 동사 문구입니다. 예를 들어 : 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 + "]" ;
}
}| 액세스 표시 | 공공의 | 보호 | 기본 | 사적인 | |
|---|---|---|---|---|---|
| 패키지와 함께 | 수업 내부 | 가지다 | 가지다 | 가지다 | 가지다 |
| 하위 클래스 | 가지다 | 가지다 | 가지다 | 그렇지 않습니다 | |
| 다른 수업 | 가지다 | 가지다 | 가지다 | 그렇지 않습니다 | |
| 다른 패키지 | 하위 클래스 | 가지다 | 가지다 | 그렇지 않습니다 | 그렇지 않습니다 |
| 다른 수업 | 가지다 | 그렇지 않습니다 | 그렇지 않습니다 | 그렇지 않습니다 | |
UML (Unified Modeling Language)은 응용 프로그램 소프트웨어의 다양한 측면에 대한 스케치, 설명 및 문서로 설계된 표준 그래픽 모델링 도구입니다. 객체 지향 프로그래밍 분야에서 특히 유용합니다. 왜냐하면 클래스, 객체 및 관계를 보여주는 직관적 인 방법을 제공하기 때문입니다. UML에는 여러 가지 유형의 다이어그램이 포함되어 있지만 객체 지향 프로그래밍의 맥락에서 클래스 다이어그램 (클래스 다이어그램) 및 대화식 다이어그램 (상호 작용 다이어그램)은 가장 일반적으로 사용되는 두 가지 유형입니다.
UML을 사용하면 프로그래머가 클래스 다이어그램을 사용하여 시스템의 구조를 설명 할 수 있습니다. 이 다이어그램은 시스템, 속성, 방법 및 가장 중요한 것은 상속, 연결, 합성 및 조합과 같은 클래스 간의 관계를 보여줍니다. 이를 통해 프로그래머는 시스템을보다 체계적으로 이해하고 설계 할 수 있습니다.
UML 다이어그램이 완료되면 소스 코드 작성의 기초로 사용할 수 있습니다. OOP에서, 레이어 다이어그램에서 소스 코드 (일반적으로 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 ;
}
} 기호 + , - 및 # 및 # 및 # 및 레이어의 메소드 이름은 속성의 액세스 용량과 메소드를 나타냅니다. 구체적으로:
+ 공개 (공개)의 속성 또는 방법을 나타냅니다.- 속성 또는 개인 정보 보호 방법 (개인)을 나타냅니다.# 속성 또는 보호 방법 (보호)을 나타냅니다.
fly() 메소드가있는 Flyable 이있는 경우 Bird 클래스는 fly() 메소드를 배포 하여이 인터페이스를 실행할 수 있습니다.School 수업에는 Teacher 수업의 많은 대상이있을 수 있지만 교사는 여전히 학교와 독립적으로 존재합니다.House 층에는 Room 많은 물체가 포함될 수 있습니다. House 취소되면 Room 도 취소됩니다.| 계승 | 모으다 | |
|---|---|---|
| 정의하다 | - 상속은 하나의 계층 (하위 층이라고 함)이 다른 층의 특성과 방법을 상속받을 수있는 메커니즘 (부모 클래스라고 함)입니다. - 세분이 다시 쓰지 않고 아버지의 코드를 재사용하도록하십시오. - "IS-A"관계에 해당합니다. | - 요소는 두 층 사이의 "거기"관계의 형태입니다. - 객체가 다른 객체를 포함하거나 참조 할 수있는 관계를 나타내지 만 두 과목은 독립적으로 존재할 수 있습니다. - "has-a"관계에 해당합니다. |
| 목적 | - 코드를 재사용하고 응용 프로그램 모듈을 개선하십시오. - 또한 다형성을 지원하여 아동의 방법이 부모 클래스의 방법을 덮어 쓰거나 확장 할 수 있도록합니다. - 예를 들어 : Animal Class에는 Move () 메소드가 있으며 조류 및 물고기 수업은 동물을 물려 받거나 움직이는 자연에 맞게 Move () 메소드를 사용하거나 재정의 할 수 있습니다. | - 객체가 서로 부분 관계를 가질 수 있지만 서로 완전히 의존하지 않는 물체 간의 관계를 나타냅니다. - 데이터 구조의 유연성을 향상시키고 복잡한 개체를 관리하는 데 도움이됩니다. - 예를 들어, 제곱 층에는 포인트 층의 물체가있을 수 있습니다. 각 정사각형은 포인트 층의 4 개의 물체 (정점을 나타냄)로 구성되지만 사각형의 피크없이 포인트가 독립적으로 존재할 수 있습니다. |
| 의존 | - 하위 클래스는 아버지의 속성과 방법을 직접 사용하기 때문에 아버지의 계급에 크게 의존합니다. | - 관련 주제는 독립적으로 존재할 수 있습니다. 그들은 함께 강하게 의존하지 않습니다. |
| 능력 | - 아버지의 층을 확장하거나 사용자 정의하십시오. - 분산 된 관계 모델링. | - 관련 객체를 관리합니다. - 물리적 관계 모델링. |
다음 예를 고려하십시오.

이 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
}
}