1. 객체 지향 언어?
객체지향 언어는 현실 세상에서 우리가 관찰할 수 있는 모든 객체(ex, 자동차, 바퀴, 의자 등)는 자신만의 "속성"과 "기능"을 가지고 상호작용한다고 보고, 이러한 개념을 프로그램에 적용하여 여러 가지 독립된 단위인 객체를 생성하고, 조작하여 객체끼리 상호작용할 수 있게 하는 프로그래밍 언어를 말한다.
2. 클래스, 객체, 인스턴스
프로그램상에서 구현할 대상을 객체라고 하며, 객체의 "속성"과 "기능"을 정의한 설계도와 같은 것이 클래스다.
그리고 클래스의 내용대로 메모리상에 구현된 실체가 인스턴스(instance)이며, 일반적 의미로 객체라고 부른다.
● 객체 : 프로그맴상에서 구현할 대상
● 클래스 : 객체의 "속성"과 "기능"을 정의한 설계도와 같은것
● 인스턴스 : 클래스의 내용대로 메모리상에 구현될 실체
3. 객체지향 언어의 특징 (캡슐화, 상송, 다형성)
- 캡슐화(Encapsulation)
캡슐화란 객체의 내부 구조 및 정보를 캡슐처럼 하나로 감싸 외부에서 볼 수 없게 은닉하여 보호하는 것을 말하며, 외부와의 상호작용을 위해 필요한 부분만 일부 공개하게 된다.
자바에서는 이러한 캡슐 기능이 클래스를 통해 구현되며, 클래스는 내부에 멤버 변수 멤버 함수(메서드)로 구성되어 있다. 이와 같이 캡슐화된 객체는 외부에서 직접적으로 접근하는 것을 막고, 외부 접근이 허락된 멤버 변수와 멤버 함수(메서드)를 통해서만 다른 객체와 상호작용할 수 있도록 한다.
- 상속(Inheritance)
상속은 부모 클래스로부터 자식 클래스가 부모 클래스의 속성을 물려받는 것을 말한다.
자식 클래스는 부모 클래스가 가지고 있는 속성에 자식 클래스만의 속성을 추가함으로써 기능을 확장시켜 사용할 수 있다. 이때 부모 클래스는 슈퍼클래스, 자식 클래스는 서브 클래스라고 부른다.
- 다형성(Polymorphism)
다형성은 하나의 객체나 메서드가 여러 가지 다른 형태로 가질 수 있는 것을 말한다.
다형성의 대표적인 사례로는 오버 라이딩(Overriding)과 오버로딩(Overloading), 그리고 상속받은 객체의 참조변수 변환이 있다.
● 오버라이딩(Overriding) : 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의 하여 사용하는 것.
● 오버 로딩(Overloading) : 메서드의 이름은 동일하나 매개변수의 타입이나 개수를 달리하여 중복 정의함으로써 매개변수에 따라 특정 메서드가 호출되는 것.
4. 객체지향프로그래밍의 장점 및 단점
● 재사용성 : 상속을 통해 프로그래밍시 코드의 재사용을 높일수 있다.
● 생산성 향상 : 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로 개발의 생산성을 향상시킬 수 있다.
● 자연적인 모델링 : 우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
● 유지보수의 우수성 : 프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기 때문에 유지보수가 쉬워서 매우 경제적이라고 할수 있다.
● 개발속도가 느린점 : 객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모된다.
● 실행속도가 느린점 : 객체지향언어는 대체적으로 실행속도가 느리다.
● 코딩난이도 상승 : 다중 상속이 지원되는 C++ 같은 경우 너무 복잡해져 코딩의 난이도가 상승할 수 있다.
5. 객체지향언어의 종류
● 자바 : 객체지향언어의 대표적 언어
● C++ : 객체지향성이 더해진 C 언어의 확장형
● C# : 닷넷 플랫폼에 의존도가 높은 프로그래밍 언어
● 파이썬 : 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어
https://kadosholy.tistory.com/88
객체지향언어란? [특징, 장점, 단점, 종류]
★ 객체 지향 언어(客體指向言語 ) 사전적 의미 IT관련 객체 지향 프로그래밍에서 사용하는 언어로서, 객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 수행될 수 있게
radait.tistory.com
[Java] 객체지향언어란? 특징(캡슐화, 상속, 다형성)과 클래스, 객체, 인스턴스
객체지향언어의 특징(캡슐화, 상속, 다형성)과 클래스, 객체, 인스턴스 1. 객체지향언어란? 객체지향언어는 현실세상에서 우리가 관찰할 수 있는 모든 객체(ex, 자동차, 바퀴, 의자, 사람 등)는 자
kadosholy.tistory.com
'Programming > JAVA' 카테고리의 다른 글
프로세스와 스레드 (Process vs Thread) (0) | 2022.10.29 |
---|---|
자바의 특징 (0) | 2022.10.27 |
Java 컬렉션(Collection) 정리 (0) | 2022.10.27 |
[동시성 이슈해결] HashMap보다는 ConcurrentHashMap을 쓰자! (0) | 2022.10.27 |
자바 환경변수 설정(JAVA_HOME, PATH, CLASSPATH) (0) | 2022.10.26 |
댓글