2024-04-24 TIL

조창일·2024년 4월 24일

내배캠

목록 보기
8/51
post-thumbnail

C# 문법 3주차 정리

객체지향프로그래밍

1) 특징

  • 캡슐화
    • 관련된 데이터와 기능을 하나의 단위로 묶는 것을 의미한다.
  • 상속
    • 기존의 클래스를 확장하여 새로운 클래스를 만드는 메커니즘이다.
  • 다향성
    • 하나의 메서드 이름이 다양한 객체에서 다르게 동작할 수 있도록 하는 것으로, 오버로딩과 오버라이딩을 통해 구현된다.
  • 추상화
    • 복잡한 시스템이나 개념을 단순화하여 필요한 기능에 집중하는 것이다.
    • 객체는 상태(데이터)와 행동(메서드)을 가지며, 실제 게계의 개체나 개념을 모델링한다.
    • 객체들 간의 상호작용을 통해 프로그램이 동작하고, 모듈화와 재사용성을 높인다.

2) 클래스

  • 클래스는 객체를 생성하기 위한 템플릿 또는 설계도 역할을 한다.
  • 객체를 생성하기 위해서는 클래스를 사용하여 인스턴스를 만들어야 한다.

3) 객체

  • 객체는 클래스의 인스턴스다. 클래스의 실체화된 형태라고 할 수 있다.

4) 구조체 vs 클래스

  • 구조체는 값 형식이며, 스택에 할당되고 참조로 값이 복사된다.
  • 클래스는 참조 형식이며, 힙에 할당되고 참조로 전달되므로 성능 측면에서 다소 차이가 있다.
  • 구조체는 상속을 받을 수 없지만 클래스는 단일 상속 및 다중 상속이 가능하다.
  • 구조체는 작은 크기의 데이터 저장이나 단순한 데이터 구조에 적합하며, 클래스는 더 복잡한 객체를 표현하고 다양한 기능을 제공하기 위해 사용된다.

접근제한자

대표적인 접근 제한자 예시

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

필드와 메서드

  • 필드는 클래스 내부에 선언되어 있는 변수로, 클래스의 상태를 나타내는 데이터를 저장한다.
  • 메서드는 클래스 내부에 선언되어 있는 함수로, 클래스의 동작을 정의하고 실행한다.

생성자와 소멸자

1) 생성자

  • 생성자는 객체가 생성될 때 호출되는 특별한 메서드다.
  • 생성자는 클래스와 동일한 이름을 가지며, 반환 타입이 없습니다.
  • 객체를 생성할 때 new 키워드와 함께 호출된다.

2) 소멸자

  • 소멸자는 객체가 소멸되는 시점에서 자동으로 호출되는 특별한 메서드다.
  • 클래스와 동일한 이름을 가지며, 이름 앞에 ~ 기호를 붙여 표현한다.
  • 소멸자는 반환 타입이 없고 매개 변수를 가질수 없다.

프로퍼티

  • 프로퍼티는 클래스 멤버로서, 객체의 필드 값을 읽거나 설정하는데 사용되는 접근자 메서드의 조합이다.
  • 프로퍼티는 필드와 마찬가지로 객체의 상태를 나타내는 데이터 역할을 하지만, 외부에서 접근할 때 추가적인 로직을 수행할 수 있다.
    ※ 자동 프로퍼티
[접근 제한자] [데이터 타입] 프로퍼티명 { get; set; }

상속

  • 상속은 기존의 클래스(부모 클래스 또는 상위 클래스)를 확장하거나 재사용하여 새로운 클래스(자식 클래스 또는 하위 클래스)를 생성하는 것이다.
  • 자식 클래스는 부모 클래스의 멤버(필드, 메서드. 프로퍼티 등)를 상속받아 사용할 수 있다.

다향성

※ 같은 타입이지만 다양한 동작을 수행할 수 있는 능력
1) 가상(Virtual) 메서드

  • 가상 메서드는 기본적으로 부모 클래스에서 정의되고 자식 클래스에서 재정의할 수 있는 메서드다.
  • 가상 메서드는 virtual 키워드를 사용하여 선언되며, 자식 클래스에서 필요에 따라 재정의 될 수 있다.

2) 추상(Abstract) 클래스와 메서드

  • 추상 클래스는 직접적으로 인스턴스를 생성할 수 없는 클래스
  • 주로 상속을 위한 베이스 클래스로 사용된다.
  • 추상 클래스는 abstract 키워드를 사용하여 선언되며, 추상 메서드를 포함할 수 있다.
  • 추상 메서드는 구현부가 없는 메서드로, 자식 클래스에서 반드시 구현되어야 한다.

3) 오버라이딩과 오버로딩

  • 오버라이딩 / 함수를 덮어쓰게 하는 것
    • 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 재정의하는 것을 의미한다.
    • 이는 상속 관계에 있는 클래스 간에 발생하며, 메서드의 이름, 매개변수 및 반환타입이 동일해야 한다.
  • 오버로딩 / 함수를 읽어올 때 쓰는 것
    • 동일한 매서드 이름을 가지고 있지만, 매개변수의 개수, 타입 또는 순서가 다른 여러 개의 메서드를 정의하는 것을 의미한다.

제너릭

  • 제너릭은 클래스나 메서드를 일반화시켜 다양한 자료형에 대응 할 수 있는 기능이다.
  • C#에서는 < T > 형태의 키워드를 이용하여 제너릭을 선언한다.
  • 패턴을 만들거나 구조를 만들 때 자주 사용된다.

out, ref 키워드

  • out, ref 키워드는 메서드에서 매개변수를 전달할 때 사용한다.
  • out 키워드는 메서드에서 반환 값을 매개변수로 전달하는 경우에 사용한다.
  • ref 키워드는 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용한다.

개인프로젝트 중 생긴일

C#에서 콘솔 text게임을 만들던 중 "잘못된 입력입니다." 가 나오게 하고싶었다.

Thread.Sleep(1000);

를 이용하면 "잘못된 입력입니다." 화면이 나오고 1초 뒤에 사라진다.

profile
안녕하세요.

0개의 댓글