2024. 11. 12. 21:24ㆍ카테고리 없음
객체지향언어란?
하나의 기능을 만들기 위해 서로 관련된 데이터와 기능을 하나의 객체로 묶어 사용하는 프로그래밍 방식이다. 이 방식을 통해 내부 구현이 어떻게 되어 있는지 몰라도, 외부에서는 해당 기능을 편리하게 가져다 사용할 수 있다.
한마디로 내부코드는 숨기고 필요한 기능만 외부에 제공하는것 이다.
이렇게 객체지향언어는 기능과 데이터를 하나로 묶어 코드의 독립성과 재사용성을 높이는 프로그래밍 방식이다.
객체지향의 핵심 개념
1. 캡슐화 (Encapsulation)
- 캡슐화는 객체의 데이터를 직접적으로 접근하지 못하도록 보호하고, 대신 객체가 제공하는 메서드를 통해서만 데이터를 조작하거나 확인하게 하는 방식이다.
예시
예를 들어 Player라는 객체가 있다면, 이 객체의 내부 데이터(체력, 공격력 등)에 직접 접근하는 것이 아니라 TakeDamage() 같은 메서드를 통해 간접적으로 접근하게 하는 것이다. 이를 통해 외부에서는 객체의 내부 구현을 알 필요 없이 필요한 기능만 사용하게 만들 수 있다.
2. 추상화 (Abstraction)
- 추상화는 불필요한 세부 사항을 숨기고 객체가 제공하는 중요한 특징만 외부에 드러내는 개념이다. 외부에서는 객체의 내부 구조나 구현 방식을 알 필요가 없고, 필요한 기능을 간단히 사용할 수 있게 만든다.
예시
Attack()이라는 메서드는 내부적으로 복잡한 계산을 수행할 수 있지만, 외부에서는 Attack()을 호출하기만 하면 공격이 이루어지도록 할 수 있습니다.
3. 상속 (Inheritance)
- 상속은 기존 클래스의 특성을 물려받아 새로운 클래스를 만들 수 있게 해주는 기능이다.
예시
Creature라는 기본 클래스를 만들어 모든 생명체의 공통 속성과 기능을 정의하고, 이를 상속받는 Player와 Monster 클래스에서 각각의 특성에 맞는 기능을 추가할 수 있다. 이렇게 하면 코드의 재사용성을 높이고 중복을 줄일 수 있다.
4. 다형성 (Polymorphism)
다형성은 동일한 메서드 호출이 상황에 따라 다르게 동작하도록 하는 기능이다.
예시
Attack()이라는 메서드를 Player와 Monster에서 각각 다르게 구현할 수 있고, 외부에서는 Attack()을 호출할 때 각 객체에 맞는 방식으로 동작하게 된다. 이를 통해 더 유연하고 확장 가능한 코드를 작성할 수 있다.