728x90

1. Object란 무엇인가?

1) 소프트웨어 Object : staterelated behavior로 구성되어 있다.
2) ObjectStateFields(몇몇 프로그래밍 언어의 변수들)에 저장하고 Methods(몇몇 프로그래밍 언어의 기능들)을 통해 동작을 보여준다.
3) 메소드는 Object 내부 상태에서 작동하고 객체 간 커뮤니케이션을 위한 기본 메커니즘 역할을 한다.
4) 데이터 캡슐화 : 내부 상태를 숨기고 모든 상호 작용이 Object의 메소드를 통해 수행되도록 하는 것.

[ 객체 구성 예시 ]

5) 코드를 개별 소프트웨어 Object로 묶으면 좋은 점

모듈화 :
- 각각의 Object의 소스 코드들은 독립적으로 작성, 유지관리 할 수 있다.
- 일단 생성되면 Object는 시스템 내부에 쉽게 전달할 수 있다.

정보 은닉:
- 오직 한 Object의 메소드와 상호작용함으로써 내부 구현의 세부사항이 외부 세계로부터 숨겨진다.

코드 재사용:
- Object가 이미 존재하는 경우 프로그램에서 그 Object를 사용할 수 있다.
- 코드의 재사용은 전문가들이 복잡한 구현/테스트/디버그와 구체적인 작업별 Object들을 가능하도록 해주고 그러한 Object들을 내가 가진 코드에서 믿고 실행할 수 있다.

플러그인 가능성 및 디버깅 용이 :
- 특정 Object에 문제가 있다고 판단되면 어플리케이션에서 해당 Object를 제거하고 다른 Object로 대체하여 연결하면 된다.

 

 


2. Class란 무엇인가?

1) Fields : cadence, speed, gear (Object의 상태를 나타낸다.)
2) Methods : changeCadence, changeGear, speedUp, applyBrakes, printStates
(메소드는 외부 세계와 상호작용하는 것으로 정의된다.)
3) 메인 메소드가 포함되지 않으면 완벽한 어플리케이션이 아니고 어플리케이션을 사용할 수 있는 청사진이다.
4) new ClassObject들을 사용해서 생성하면 어플리케이션에 다른 몇몇 클래스에 속한다.
5) 위는 두 개의 개별 Object들을 만들고 그것이 가진 메소드들을 불러오는 BicycleDemo 클래스이다.

 

 


3. Inheritance(상속)이란 무엇인가?

 

1) Class는 하나의 직접적인 SuperClass를 가지는 것이 허락된다.
2) 각각의 SuperClass는 무제한으로 SubClass를 가질 수 있다.
3) 상속은 Class의 선언 시작에 extends 뒤에 상속하려는 Class의 이름을 적어 사용한다.
4) SuperClassField들과 Method들을 모두 SubClass에서 사용할 수 있다.
5) SubClass 코드가 읽기 쉬워진다.
6) 해당 코드는 각 SubClass의 소스 파일에 나타나지 않으므로 SuperClass가 정의하는 StateBehavior를 문서화해야한다.

 


4. Interface란 무엇인가?

1) Interface : body가 비어있는 연관된 Method들의 그룹
2) 선언 : class className Implements InterfaceName
3) 인터페이스를 구현하면 클래스가 제공하기로 약속한 behavior에 대해 더 공식화될 수 있습니다.
4) 인터페이스는 클래스와 외부 세계 간의 계약을 형성하고 이 계약은 빌드 시 컴파일러에 의해 적용됩니다.
5) 클래스가 인터페이스를 구현한다고 주장한다면, 해당 인터페이스에 의해 정의된 모든 Method는 클래스가 성공적으로 컴파일되기 전에 소스 코드에 반드시 나타나야 합니다.

 


5. Package란 무엇인가?

1) 패키지는 관련 클래스 및 인터페이스 집합을 구성하는 네임스페이스
2) Java 프로그래밍 언어로 작성된 소프트웨어는 수백 또는 수천 개의 개별 Class로 구성될 수 있으므로 관련 ClassInterfacePackage에 배치하여 구성하는 것이 좋다.
3) API(Application Programming Interface) : Java 플랫폼은 자체 애플리케이션에서 사용하기에 적합한 방대한 클래스 라이브러리(패키지 세트)

 

 

 


참고) https://docs.oracle.com/javase/tutorial/java/concepts/index.html

 

Lesson: Object-Oriented Programming Concepts (The Java™ Tutorials > Learning the Java Language)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

 

728x90

+ Recent posts