객체지향 프로그래밍이란?
객체지향 프로그래밍이란?
현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍 하는 기법이다.
객체지향 프로그래밍의 3요소
캡슐화 : 속성과 기능을 캡슐로 감싸 외부로부터 안보이게 하는 정보 은닉 개념.
상속 : 부모의 클래스로부터 모든 것을 상속받는 자식 클래스의 구조를 만드는 것.
다형성 : 상황에 따라 esc키가 다른 역할을 하는 것처럼 하나의 기능이 다양한 역할을 수행하는 것.
객체지향 5원칙 (SOLID 원칙)
1. 단일 책임 원칙( Single Responsibility Principle )
○ 모든 클래스는 각각 하나의 책임만을 가져야 한다. 클래스를 변경하는 이유 또한 단 하나의 이유여야 한다.
1. 개방 폐쇄 원칙( Open Closed Principle )
○ 클래스는 확장에는 열려야 있어야 하며, 수정에는 닫혀 있어야 한다.
1. 리스코프 치환 원칙( Liskov Substitution Principle )
○ 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
1. 인터페이스 분리 원칙( Interface Segregation Principle )
○ 클라이언트는 이용하지 않는 메서드가 존재하지 않도록 클래스를 구현해야 한다. 하나의
일반적인 인터페이스보다 구체적인 여러개의 인터페이스가 낫다.
1. 의존 역전 법칙( Dependency Inversion Principle )
○ 클라이언트는 추상화에 의존해야 하며, 구체화에 의존해서는 안된다.즉 구체적인 클래스보다
인터페이스나 추상클래스와 관계를 맺어야 한다.
그래서 프로그래밍에서의 객체지향은 무엇이냐 하면
캡슐화를 통해 만들어진 하나의 클래스, 즉 짜여진 틀로 여러 개의 인스턴스를 도장처럼 생성할 수 있고 그 여러개의 인스턴스가 독자적인 기능을 수행하는 것을 의미한다.
예시
class Monster
{
public int Hp
{
get => hp;
set
{
hp = value;
}
}
private int hp;
int atk;
string name;
}
void Start()
{
Monster slime = new Monster(); // Monster라는 하나의 틀로 slime, devil이라는 객체를 찍어냄
Monster devil = new Monster();
slime.Hp -= 10;
devil.Hp += 10;
// 같은 몬스터의 클래스로부터 생성된 객체지만 각자 다른 영역에 존재하는, 엄연히 다른 객체
}