반응형
SMALL
객체지향 프로그래밍 (Object Oriented Programming)
- 객체 지향 프로그래밍(OOP)은 소프트웨어 개발 패러다임 중 하나.
- 코드를 객체라는 단위로 구조화하여 개발하는 방식.
- OOP의 네 가지 주요 특징은 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction).
1. 캡슐화(Encapsulation)
- 캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶는 것.
- 객체 내부의 상세한 동작을 감추고 외부에서는 해당 객체의 함수 또는 인터페이스로만 접근할 수 있도록 하는 것을 의미한다.
- 객체간의 결합도를 감소시키고 응집도를 강화하는데 기여할수 있다 = 유지보수가 편리해진다.
- 예시
public class Car , ICarNameSetter, ICarNameReturner
{
// 외부에서 접근 불가능
private string _carName;
// 값을 할당하려면 함수를 통해야만 가능
public void SetCarName(string newCarName) => _carName = newCarName;
// 외부에서 값만을 리턴 받을수 있게 함수로 캡슐화
public string GetCarName() => return _carName;
}
2. 상속(Inheritance)
- 상속은 이미 존재하는 클래스(부모 클래스)를 기반으로 새로운 클래스(자식 클래스)를 만드는 것.
- 코드의 재사용성이 향상되고 계층 구조가 형성.
- 예시
public class Animal
{
public void Eat()
{
var type = this.GetType().ToString();
Console.WriteLine($"{type} is eating");
}
}
public class Dog : Animal
{
public void Bark()
{
var type = this.GetType().ToString();
Console.WriteLine($"{type} is barking");
}
}
3. 다형성(Polymorphism)
- 다형성은 동일한 메서드나 프로퍼티가 다양한 형태로 동작하는 것.
- 다형성이 구현된 구조에서는 상위 객체의 타입으로 하위 객체를 참조할 수 있기
- 오버로딩(Overloading)과 오버라이딩(Overriding)이 좋은 예시이다.
- 예시
public class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
public void Draw(int number)
{
for (int i = 0; i < numbe; i++)
Console.WriteLine("Drawing a circle");
}
}
4, 추상화(Abstraction)
- 추상화는 복잡한 시스템에서 중요한 부분을 간추려 표현하는 것.
- 추상 클래스나 인터페이스를 사용이 좋은 예시이다.
- 예시
public abstract class Shape
{
public abstract void Draw();
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
반응형
LIST
'CS > CS 정리' 카테고리의 다른 글
[CS] GC (Garbage Collection)에 대해 (2) | 2023.12.19 |
---|---|
[CS] 디자인 패턴 간단 정리 (0) | 2023.12.17 |
[CS] DB의 종류 (0) | 2023.04.24 |
[CS] 데이터베이스 (1) | 2023.04.22 |
[CS] 멀티 프로세싱 & 멀티 스레딩 간단 정리 . 2 (1) | 2023.04.15 |