C# 프로그래밍 - 클래스와 객체

Sungchan Ahn(안성찬)·2024년 9월 20일

내일배움캠프

목록 보기
28/104

객체지향 프로그래밍(Object-Oriented Programming, OOP)

상태(필드)와 행동(메서드)으로 구성된 객체를 바탕으로 객체 간 상호작용을 통해 로직을 구성하는 프로그래밍 패러다임

  • 객체(object) : 사람, 사물 등 세상에 존재하는 모든 대상들을 객체라고 할 수 있다. 객체지향 프로그래밍에서는 이러한 객체를 상태(속성)와 행동(기능)으로 추상화하여 각각 필드와 메서드의 형태로 객체를 정의하고 객체들 간의 상호작용을 통해 프로그램이 동작한다.
    • 클래스가 실체화된 형태, 클래스의 인스턴스
    • 각 객체는 독립적인 상태. 객체마다 고유한 데이터를 가질 수 있다.

객체지향 프로그래밍의 특징

  1. 추상화 (Abstraction) : 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
    • 공통된 부분을 클래스로 모델링
    • 불필요한 세부적인 구현을 생략하고 객체의 중요한 부분에 집중하여 핵심적인 역할만 수행

  2. 캡슐화 (Encapsulation) : 연관있는 데이터와 기능을 하나의 단위로 묶어 외부로부터 보호하는 것
    • 클래스를 이용하여 데이터와 메서드를 캡슐화
    • 정보를 은닉하고, 외부로부터의 직접적인 접근을 제한

  3. 상속 (Inheritance) : 기존의 클래스를 활용하여 새로운 클래스를 만드는 메커니즘
    • 부모 클래스(상위 클래스, 슈퍼 클래스)의 상태와 동작을 자식 클래스(하위 클래스, 서브 클래스)가 이어 받아 재사용
    • 여러 객체의 공통된 상태나 동작을 부모 클래스로 정의하고 각 객체에 대한 클래스를 정의할 때 부모 클래스로부터 상속 받아 공통된 부분에 대한 코드 중복을 줄인다
    • 클래스 간 계층 구조를 구성하여 코드를 구조화 할 수 있다

  4. 다형성 (Polymorphism) : 어떤 객체의 속성이나 기능이 상황에 따라 다른 역할을 수행할 수 있도록 다양한 방식으로 구현하거나 사용할 수 있는 능력
    • 동일한 이름을 가진 메서드가 여러 객체에서 다르게 동작할 수 있도록 하는 것
    • 오버로딩과 오버라이딩을 통해 구현


클래스

객체를 생성하기 위한 틀 또는 설계도. 객체의 상태와 행동을 정의

  • 필드(Fields): 클래스에서 사용되는 변수. 객체의 상태를 나타내는 데이터를 저장
  • 메서드(Methods): 클래스에서 수행되는 동작. 객체의 행동을 구현
  • 생성자(Constructors): 객체를 초기화하는 역할. 객체가 생성될 때 자동으로 호출
  • 소멸자(Destructors): 객체가 소멸될 때 호출

접근 제한자

클래스, 필드, 메서드 등의 접근 권한을 지정하는 키워드. 클래스의 캡슐화를 제어하는 역할

  • public : 외부에서 자유롭게 접근 가능
  • private : 같은 클래스 내부에서만 접근 가능
  • protected : 같은 클래스 내부, 상속 받은 클래스에서 접근 가능

프로퍼티 (Property)

클래스 맴버로서 객체의 필드 값을 읽거나 설정하는데 사용되는 접근자 메서드의 조합

  • 접근 제한(캡슐화)을 건드리지 않고 외부에서 간접적으로 필드의 값을 읽거나 설정
  • get : 필드를 반환하거나 다른 로직을 수행
  • set : 필드에 값을 설정하거나 다른 로직을 수행
  • 예시 : private로 접근 제한된 필드 값 name과 name에 대한 프로퍼티
class Person
{
	private string name;
    
    //(접근제한자 - 데이터타입 - 프로퍼티이명)
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}
profile
게임 개발 기록

0개의 댓글