2025. 3. 15. 01:58ㆍprogramming/C#
💡 객체지향(Object-Oriented Programming, OOP)이란?
"객체(Objects)"를 중심으로 프로그램을 구성하는 방식으로, 실제 세계를 모델링하여 코드로 표현하는 방법입니다.
💡 객체지향의 장점?
✔ 코드 재사용성 (상속) → 같은 코드 반복하지 않고 재사용 가능
✔ 유지보수 용이 (캡슐화) → 필요한 부분만 수정 가능
✔ 확장성 (다형성) → 기능을 쉽게 추가 가능
✔ 현실 세계 모델링 쉬움 → 코드가 직관적이고 이해하기 쉬움
💡 그렇다면, 객체(Object)란?
객체는 데이터(속성, 변수)와 동작(메서드)을 하나로 묶은 것 예를들어 자동차를 생각해보자.
🚗 자동차 객체는 다음과 같은 데이터와 동작을 갖는다.
- 속성(데이터): 색상, 속도, 브랜드, 연료량
- 동작(메서드): 가속하기, 감속하기, 정지하기
이 자동차라는 객체를 코드로 표현하면 다음과 같다. (참고로 C#에서 객체를 만들기 위한 틀(?) 설계도를 class라 한다.)
//자동차 class 즉, 자동차 객체는 색상과 속도라는 속성 즉 데이터를 가지고 있고
// 가속과 감속이라는 기능 즉 메소드를 갖는다.
class 자동차 {
public string 색상;
public int 속도;
public void 가속() {
속도 += 10;
Console.WriteLine($"현재 속도: {속도}km/h");
}
public void 감속() {
속도 -= 10;
Console.WriteLine($"현재 속도: {속도}km/h");
}
}
위에서 정의한 자동차 객체는 앞으로 자동차를 찍어내는 틀 역할을 한다. 위 자동차 객체로 내 차를 만들어보자.
자동차 내차 = new 자동차(); // 자동차 객체 틀을 사용해 내차라는 자동차를 찍어낸다.
내차.색상 = "빨강";
내차.가속(); // 현재 속도: 10km/h
자동차를 객체화해서(class) 객체 중심의 프로그래밍(가속 감속이라는 기능을 정의하고, 색상을 입히는 등-)을 해보았다.
이게 데이터(속성)와 기능(메서드)을 하나의 객체로 묶어서 정의하고 사용하는 것이 객체지향 프로그래밍이다.
🔹 객체지향의 4대 특징
객체지향 프로그래밍에는 4가지 핵심 개념이 있어요.
1️⃣ 캡슐화(Encapsulation)
- 데이터를 숨기고(private), 필요한 기능만 공개(public)하는 것
- 예시: 은행 계좌에서 잔액을 직접 수정할 수 없고, 입금(), 출금() 메서드를 통해서만 변경 가능
2️⃣ 상속(Inheritance)
- 기존 클래스(부모)를 확장하여 새로운 클래스(자식)를 만드는 것
- 예시: 동물 클래스를 만들고, 개와 고양이가 이를 상속받아 사용
3️⃣ 다형성(Polymorphism)
- 같은 메서드라도 상황에 따라 다르게 동작하는 것 (override, interface 활용)
- 예시: 울다() 메서드가 개에서는 "멍멍", 고양이에서는 "야옹" 출력
4️⃣ 추상화(Abstraction)
- 복잡한 내부 동작은 숨기고, 중요한 부분만 노출하는 것
- 예시: 자동차 운전자는 엔진 내부 동작을 몰라도, 시동켜기() 버튼만 누르면 됨
이에대한 자세한 글은 이 포스팅을 참조👉🏼 https://voltnuna.tistory.com/290
[C# 시작 전 필수] 객체지향(OOP)의 4대 특징 (feat.캡슐화, 상속, 다형성,추상화)
1. 캡슐화(Encapsulation): 주 목적은 '데이터 은닉'이다. 민감한 데이터를 private로 감춰서 public의 setter, getter 메소드로만 private로 감춘 데이터에 접근&변경할 수 있다. 즉, read-only, write-only한 선택적
voltnuna.tistory.com
🚀 정리
✅ 객체지향은 "객체"를 중심으로 프로그램을 구성하는 방식
✅ 객체(Object) = 데이터(속성) + 기능(메서드)
✅ 4가지 핵심 개념: 캡슐화, 상속, 다형성, 추상화
✅ 코드 재사용성과 유지보수성이 뛰어남
'programming > C#' 카테고리의 다른 글
[C# 시작 전 필수] 객체지향(OOP)의 4대 특징 (feat.캡슐화, 상속, 다형성,추상화) (0) | 2025.03.15 |
---|---|
[C# 시작 전 필수] 객체지향의 '접근 제한자' (0) | 2025.03.14 |