안녕하세요. 오늘은 객체지향 언어에 대한 정의와 4가지 특징들에 대해서 알아보도록 하겠습니다.
객체지향 언어의 정의
객체지향 언어(Object Oriented Language)는 객체를 중심으로 프로그래밍하는 언어를 의미합니다. 객체란 데이터와 데이터를 처리하는 메서드를 하나의 묶음으로 갖는 개념입니다. 객체 지향 언어는 클래스(Class)를 이용하여 객체를 생성합니다. 클래스란 객체를 정의하는 템플릿이라고 할 수 있으며, 클래스에는 객체의 상태를 저장하는 필드(Field)와 객체의 동작을 구현하는 메서드(Method)가 포함됩니다. 이를 통해 객체를 생성하고 조작할 수 있습니다.
객체지향 언어의 특징
객체지향 언어의 특징으로는 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction)가 있습니다. 각각의 특징들에 대해서 자세히 알아보도록 하겠습니다.
캡슐화(Encapsulation)
캡슐화는 은닉이라고도 불리며, 객체 지향 프로그래밍에서 중요한 개념 중 하나입니다. 캡슐화는 데이터와 메서드를 하나로 묶어 외부에서 직접 접근할 수 없도록 하는 것입니다. 이를 통해 데이터의 보호와 재사용성을 높일 수 있습니다. 클래스 내부에서는 변수나 함수 등을 선언할 때 public, private, protected 키워드를 이용하여 접근 제어를 할 수 있습니다. 이 중 private 키워드를 사용하여 클래스 외부에서는 접근할 수 없도록 선언된 변수나 함수는 클래스 내부에서만 사용 가능합니다. 이렇게 변수나 함수를 외부에서 접근할 수 없도록 제한하는 것을 데이터 은닉(Data Hiding)이라고 합니다.
상속(Inheritance)
상속은 기존에 정의된 클래스의 속성과 기능을 다른 클래스에서 재사용할 수 있도록 하는 것입니다. 즉, 상속을 통해 새로운 클래스가 이미 정의된 클래스의 모든 속성과 메서드를 물려받을 수 있다는 것입니다. 이를 통해 코드의 재사용성이 높아지고 유지 보수가 용이해집니다. 상속은 부모 클래스와 자식 클래스 간의 관계를 나타내며 부모 클래스는 자식 클래스에게 상속해 줄 속성과 메서드를 정의하고 자식 클래스는 부모 클래스에서 상속받은 속성과 메서드를 그대로 사용하거나, 필요에 따라 오버라이딩하여 새로운 기능을 추가하거나 변경할 수 있습니다.
또한, 상속을 통해 다형성 개념도 구현할 수 있습니다. 부모 클래스에서 정의된 메서드를 자식 클래스에서 오버라이딩하면 같은 이름의 메서드를 호출했을 때 자식 클래스에서 오버라이딩한 메서드가 호출되는데 이를 이용하여 부모 클래스와 자식 클래스 간에 동일한 메서드를 사용하면서 다양한 구현을 할 수 있습니다.
다형성(Polymorphism)
다형성은 하나의 메서드나 클래스가 다양한 방법으로 동작할 수 있도록 하는 것입니다. 즉, 같은 이름의 메서드나 연산자를 다양한 객체에 적용할 수 있는 것을 의미합니다. 이를 통해 유연한 코드를 작성할 수 있습니다. 다형성은 크게 오버 로딩(Overloading)과 오버라이딩(Overriding)으로 구분할 수 있습니다.
오버 로딩이란 같은 이름의 메서드나 연산자를 매개변수의 타입, 개수, 순서 등을 다르게 하여 여러 버전으로 정의하는 것을 말합니다. 이를 통해 같은 기능을 하는 다양한 버전의 메서드를 만들 수 있습니다.
오버라이딩이란 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 이를 통해 상속관계에 있는 클래스들 사이에서 같은 이름의 메서드를 다르게 구현할 수 있습니다.
추상화(Abstraction)
추상화는 복잡한 시스템을 단순화하여 모델링하는 것을 의미합니다. 이를 통해 시스템의 구조를 이해하기 쉽고 유지 보수하기 쉽도록 만들 수 있으며, 객체지향 프로그래밍에서 가장 중요한 과정 중 하나입니다. 자동차라는 객체를 예로 들자면, 자동차 객체의 속성으로는 차종, 색상, 연식 등이 있고 동작으로는 주행, 정지, 기어 변속 등이 있다는 것을 추출해 낼 수 있습니다. 추출된 속성과 동작을 기반으로 자동차 클래스를 정의할 수 있으며 이를 통해 여러 대의 자동차 객체를 생성할 수 있습니다.
추상화는 객체 지향 프로그래밍에서 상속과 밀접한 관련이 있습니다. 상속을 통해 부모 클래스의 추상화된 속성과 동작을 상속받아 자식 클래스에서 사용할 수 있기 때문입니다. 추상화는 객체지향 프로그래밍에서 유지 보수성, 재사용성 등을 높이는데 중요한 역할을 합니다.
여기까지 객체지향 언어에 대한 정의와 4가지 특징들에 대해 알아보았습니다.
'IT 정보' 카테고리의 다른 글
[프로그래밍 언어] C언어란? (0) | 2023.04.16 |
---|---|
[마크업 언어] HTML 이란? (0) | 2023.04.04 |
[프로그래밍언어] Python(파이썬) 이란? (0) | 2023.03.17 |
ChatGPT(챗 GPT)란? (0) | 2023.03.14 |
AR(Augmented Reality, 증강현실)과 VR(Virtual Reality, 가상현실) 이란? (0) | 2023.03.13 |
댓글