객체지향 프로그래밍 OOP object oriented programming
객체지향 : 현실에서 부품을 조립하여 제품만들듯 소프트웨어 개발시에도 객체들을 조립하여 작성 할 수 있는 기법
-소프트웨어 재사용 및 확장용이, 유지보수 쉬움
- 복잡한 구조를 단계적,계층적으로 표현. 멀티미디어 데이터 및 병렬처리 지원
ㅇ객체지향의 주요 구성요소
객체(Object), 클래스(Class), 메시지(Message)
ㅇ객체지향 프로그래밍 언어의 특징
캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 연관성(Relationship)
ㅇ객체지향의 주요 구성요소
1. 객체
데이터(속성)*와 이를 처리하기위한 연산(메소드)*을 결합시킨(캡슐화한) 하나의 소프트웨어 모듈*이다.
*속성(Attribute) : 한 클래스내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서
성질,분류,식별,수량 또는 현재상태 등을 표현한다.
*메소드(Method) : 객체가 메시지를 받아 실행 해야 할 때 구체적인 연산을 정의하는 것으로
객체의 상태를 참조, 변경하는 수단이 된다.
*모듈 : 모듈화를 통해 분리된 시스템의 각기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위등과 같은 의미로 사용된다.
*모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 수정,재사용,유지관리를 용이하도록 시스템의 기능들을 모듈단위로 분해하는 것을 의미
- 데이터:
객체가 가지고있는 정보로 속성이나 상태, 분류등을 나타냄
속성(Attribute), 상태, 변수, 상수, 자료 구조라고도 함
- 함수 :
객체가 수행하는 기능으로 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘이다
객체의 상태를 참조하거나 변경하는 수단이 되는 것
메소드(Method), 서비스(Service), 동작(Operation), 연산 이라고도 한다.
객체의 특성
- 객체가 반응할수있는 메세지(Message)의 집합을 행위라고 하며 객체는 행위의 특징을 나타낼수있다.
*메세지는 객체들 간에 상호작용을 하는데 사용하는 수단, 객체에게 어떤 행위를 하도록 지시하는 명령,요구사항
- 객체의 메소드는 다른 객체로 부터 메세지를 받았을 때 정해진 기능을 수행한다.
객체 = 데이터 + 함수
프로그램 = 객체 + 객체
2. 클래스
클래스는 공통된 속성과 연산(행위)를 갖는 객체의 집합
쉽게 말해서 두개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소
객체의 일반적인 타입(type)를 의미한다.
-클래스는 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀이다.
-클래스는 객체지향 프로그램에서 데이터를 추상화하는 단위이다.
ㅇ 클래스에 속한 각각의 객체 : 인스턴스
ㅇ 클래스로부터 새로운 객체를 생성하는 것 : 인스턴스화
-동일 클래스에 속하는 각각의 객체(인스턴스)들은 공통된 속성과 행위를 가지고 있으면서,
그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러가지 객체를 나타내게 된다.
3. 메시지
객체들 간에 상호작용하는데 사용되는 수단으로 객체의 메소드 (동작,연산)을 일으키는 외부의 요구사항
메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환
ㅇ객체지향 프로그래밍 언어의 특징
1. 캡슐화
-객체의 필드(속성), 메소드(연산)를 하나로 묶고 실제 구현내용을 감추는 것
-외부객체는 객체 내부의 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용가능
-외부의 잘못된 사용으로인해 객체가 손상되지않도록 캡슐화하여 보호
-자바언어는 캡슐화된 멤버를 노출할 것인지 숨길것인지 결정하기 위해 접근 제한자(public privatie...) 사용
-객체들 간의 메세지를 주고받을때 상대객체의 세부내용은 알필요가 없으므로
인터페이스가 단순해지고 객체간의 결합도가 낮아진다.
-재사용 용이
2. 정보은닉
캡슐화에서 가장 중요한 개념으로 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
3. 추상화
불필요한 부분을 생략하고 객체의 속성중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화하는 것
데이터의 공통된 성질을 추출하여 슈퍼클래스를 선정하는 개념
4. 상속성
-상속은 이미 정의된 상위 클래스(부모클래스)의 모든 속성과 연산을 하위 클래스(자식클래스)가 물려받는 것.
-하위 클래스는 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.
-상속 대상 : 필드(속성)와 메소드(연산)
-효과 : 빠른개발, 중복줄임, 유지보수의 편리성제공, 객체의 다형성 구현
-소프트웨어 재사용을 높이는 중요한 개념
*다중상속 : 한개의 클래스가 두개이상의 상위 클래스로 부터 속성과 연산을 상속 받는 것
5. 다형성
-여러가지의 형태를 가지고있다는 의미로, 하나의 메세지에 대해 여러가지 형태의 응답이 있다는 것을 의미
자세히 말하자면 다형성은 메세지에 의해 객체(클래스)가 연산을 수행하게 될 때
하나의 메세지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미.
-객체(클래스)들은 동일한 메소드명(어떤일을 처리하는 실행문을 모아놓은 블록)을 사용하여 같은 의미의 응답을 한다.
6. 연관성
연관성은 두개이상의 객체(클래스)들이 상호 참조하는 관계를 말한다.
자바 실행 프로그램은 반드시 / class블록과 / main()메소드블록 / 으로 구성되어있다.
메소드 블록은 단독으로 작성될 수 없고 , 항상 클래스 내부에서 작성 되어야 한다.
- 클래스 : 필드(속성) 또는 메소드(연산)를 포함하는 블록
- 메소드 : 어떤 일을 처리하는 실행문을 모아 놓은 블록
* main()메소드만큼은 다른 이름으로 바꾸면 안된다.
이유 : java.exe로 JVM을 구동시키면 제일 먼저 main()메소드를 찾아서 실행시키기 때문이다.
그래서 main()메소드를 프로그램 실행 진입점 이라고 한다. 만약 클래스 내부에 main()메소드가 없거나 잘못작성되면 클래스를 실행할 수 없다.
클래스와 [인강 참조하여 새로운 글에 정리하기]
패키지, 인터페이스 해당 글에 추가정리
클래스란 설계도 혹은 틀
객체란 '클래스의 인스턴스'
인스턴스란 클래스를 통해서 구현해야할 대상(객체)이 실제로 구현된 구체적인 실체를 말한다.
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 22-06-15 자바 static ☑ (0) | 2022.06.15 |
---|---|
[JAVA] 22-06-16 JVM 메모리 구조 ☑ (0) | 2022.06.15 |
[JAVA] 자바 객체와 클래스 ! 개념 이해 추가 정리 ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바의 시작과 Scanner ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바 변수와 데이터 타입 ☑ (0) | 2022.06.13 |