객체지향 프로그래밍 (Object Oriented Programming)
객체(Object)를 중심으로 프로그램을 설계, 개발해 나가는 것
클래스(설계도)를 이용해 데이터(변수)와 행동(함수)을 하나로 묶은 객체(인스턴스)를 만들어 사용하는 것이 가장 큰 특징
장점
- 코드의 재사용성 용이
- 유지보수가 쉬우며 대규모 프로젝트에 적합
단점
- 처리속도가 느림
- 객체에 따른 용량 증가
객체지향 프로그래밍의 5가지 설계 원칙 (SOLID 원칙)
1. 단일 책임 원칙 (SRP) : 클래스는 단 하나의 목적을 가져야 하며 클래스를 변경하는 이유도 단 하나의 이유여야 한다.
2. 개방-폐쇠 원칙 (OCP) : 확장에는 열려있고, 변경(수정)에는 닫혀있어야 한다.
3. 리스코프 치환 원칙 (LSP) : 부모 클래스 객체를 자식 클래스로 교체해도 문제가 없어야 함
4. 인터페이스 분리 원칙 (ISP) : 인터페이스는 작고 명확하게 분리되어야 하며 사용하지 않는 기능은 강제로 구현하지 않도록 한다.
5. 의존 역전 법칙 (DIP) : 구체화(구현된 클래스)가 아닌 클라이언트는 추상화(인터페이스)에 의존해야 한다.
객체지향 프로그래밍의 4가지 특징
1. 캡슐화 (Encapsulation)
관련된 데이터(변수)와 메서드(함수)를 하나의 단위로 묶음
접근 제한자(private, protected, public)로 외부 접근을 제한하고, 객체 내에서만 접근이 가능하도록 해주며 데이터를 보호하고 잘못된 접근을 막는다.
2. 추상화 (Abstraction)
객체에서 필요한 공통된 부분을 추출하는 것을 의미.
추상화를 통해 객체들 간의 공통된 특성을 분리하여 코드를 간결하게 만들 수 있음
3. 상속 (Inheritance)
기존 클래스의 특성을 다른 클래스가 상속받아 확장할 수 있으며 클래스 간의 계층 구조를 형성
상속은 비슷한 객체들의 부모 클래스와 인터페이스를 정의하여 공통화 한 다음 상속받아 객체를 좀 더 다루기 쉽게 한다.
4. 다형성 (Polymorphism)
같은 종류의 클래스가 하나의 메시지에 대해 서로 다른 행동을 하는 것을 말함.
다형성을 통해 코드의 유연성을 높이고, 코드의 가독성을 개선할 수 있음
오버라이딩, 오버로딩 형태
나는 지금 유니티를 다루고있으며 유니티에서 코딩하려면 C#으로 코딩, 방식은 객체지향 프로그래밍으로 진행
- 유니티에서 Player라는 스크립트를 만들면 C#코드로 Player 클래스를 만들고 클래스 안에 체력, 공격력 등을 넣고 게임에선 이걸 객체처럼 사용
- 다른 프로그래밍엔 절차지향이 있음
'C# > Theory' 카테고리의 다른 글
| [C#] 클래스(Class), 객체(Object), 인스턴스(Instance) (4) | 2025.04.28 |
|---|---|
| [C#] 딕셔너리 (Dictionary) (0) | 2025.04.10 |
| [C#] 메서드, 매개변수, 반환(return), void (0) | 2025.02.19 |
| [C#] 조건문 - 홀/짝수 구분, 등급 출력 등 (0) | 2025.02.10 |
| [C#] 문자열 처리 기능 (0) | 2025.02.06 |