728x90
반응형
※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
객체지향 프로그래밍 언어의 개요
객체지향 프로그래밍 언어는 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법입니다.
- 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법으로, 한 프로그램을 다른 프로그램에서 이용할 수 있도록 합니다.
객체지향 프로그래밍 언어 장 · 단점
- 상속을 통한 재사용과 시스템의 확장이 용이합니다.
- 코드의 재활용성이 높습니다.
- 자연적인 모델링에 의해 분석과 설계를 쉽고 효율적으로 할 수 있습니다.
- 사용자와 개발자 사이의 이해를 쉽게 해줍니다.
- 대형 프로그램의 작성이 용이합니다.
- 소프트웨어 개발 및 유지보수가 용이합니다.
- 프로그래밍 구현을 지원해 주는 정형화된 분석 및 설계 방법이 없습니다
- 구현 시 처리 시간이 지연됩니다.
객체지향 프로그래밍 언어의 종류
- JAVA
- 분산 네트워크 환경에 적용이 가능하며, 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있습니다.
- 운영체제 및 하드웨어에 독립적이며, 이식성이 강합니다.
- 캡술화가 가능하고 재사용성이 높습니다.
- C++
- C 언어에 객체지향 개념을 적용한 언어입니다.
- 모든 문제를 객체로 모델링하여 표현합니다.
- Smalltalk
- 1세대 객체지향 프로그래밍 언어 중 하나로 순수한 객체지향 프로그래밍 언어입니다.
- 최초로 GUI를 제공한 언어입니다.
※ GUI(Graphical User Interface)
GUI는 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스입니다.
객체지향 프로그래밍 언어의 구성 요소
객체지향 프로그래밍 언어의 구성 요소에는 객체(Object), 클래스(Class), 메시지(Message)가 있습니다.
- 객체(Object)
- 데이터(속성)와 이를 처리하기 위한 연산(메소드)을 결합시킨 실체입니다.
- 데이터 구조와 그 위에서 수행되는 연산들을 가지고 있는 소프트웨어 모듈입니다.
- 속성(Arrtibute) : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위 별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현합니다.
- 메소드(Method) : 객체가 메시지를 받아 실행해야 할 때 구체적인 연산을 정의하는 것으로, 객체의 상태를 참조하거나 변경하는 수단이 됩니다.
- 클래스(Class)
- 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소입니다.
즉 공통된 특성과 행위를 갖는 객체의 집합이라고 할 수 있습니다. - 객체의 유형 또는 타입(Object Type)을 의미합니다.
- 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소입니다.
- 메시지(Message)
- 객체들 간에 상호작용을 하는데 사용되는 수단으로 객체의 메소드(동작, 연산)를 일으키는 외부의 요구 사항입니다.
- 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환하게 됩니다.
728x90
객체지향 프로그래밍 언어의 특징
객체지향 프로그래밍 언어의 특징에는 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등이 있습니다.
- 캡슐화(Encapsulation)
- 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미합니다.
- 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급 효과가 적습니다.
- 캡슐화된 객체들은 재사용이 용이합니다.
- 정보 은닉(Information Hiding)
- 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것입니다.
- 추상화(Abstraction)
- 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화하는 것입니다.
- 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념입니다.
- 상속성(Inheritance)
- 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것입니다.
- 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있습니다.
- 다형성(Polymorphism)
- 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미합니다.
- 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 합니다.
※ 캡슐화와 정보 은닉의 장점
- 유지보수의 용이성
- 객체 이용의 용이성
※ 정보 은닉
캡슐로 된 감기약을 예로 들면 정보 은닉은 감기약에 어떤 재로가 들어 있는지 몰라도 감기가 걸렸을 때 먹는약이라는 것만 알고 복용하는 것과 같은 의미입니다.
※ 추상화(Abstraction)의 종류
- 과정 추상화
- 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법
- 데이터 추상화
- 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어 추상화
- 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법
※ 상속성(Inheritance)의 종류
- 단일 상속 : 하나의 상위 클래스로부터 상속받는 것
- 다중 상속 : 여러 개의 상위 클래스로부터 상속받는 것
728x90
반응형
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래밍 언어 활용 - 라이브러리 (0) | 2024.08.27 |
---|---|
정보처리산업기사 - 프로그래밍 언어 활용 - 스크립트 언어 (1) | 2024.08.26 |
정보처리산업기사 - 프로그래밍 언어 활용 - 절차적 프로그래밍 언어 (0) | 2024.08.24 |
정보처리산업기사 - 프로그래밍 언어 활용 - JavaScript (0) | 2024.08.23 |
정보처리산업기사 - 프로그래밍 언어 활용 - 웹 프로그래밍 언어 - HTML (0) | 2024.08.22 |