본문 바로가기

프로그래밍/C#

5. C# 기초 -3일차 NET과 개체지향 프로그래밍

1. 개체와 클래스의 관계

  • 클래스 :  변수(필드)의 모음
  • 메서드 : 변수와 특정 코드의 모음

 

접근 한정자(정보은닉)

  • 접근 한정자로 필요한 부분만 표시하여 사용할 수 있도록 함(static)

 

개체의 내부

  • 스택 <-> 힙의 관계
  • 스택 : 저장소
  • 힙 : 저장(메모리 정리)

 

개체를 사용한다는 것

  • 개체를 사용하는 것은 힙이라는 저장소를 사용
  • 개체는 선언하면 메모리에 힙이라는 저장소를 사용하여 저장
  • 스택이란 공간도 같이 활용
  • 스택은 힙의 주소만 갖고 있음(안내의 역할 : 실제 데이터가 어디에 있는지 알고 있음)
  • 데이터를 요청 시 실제 데이터의 위치를 안내함

개체를 사용하기 위해 하는 것

  • 인스턴스를 한다고 하면 개체를 선언함(사용하기 위한 작업 : 신고)
  • 즉, 인스턴스는 클래스를 변수화 하는 과정
  • new 키워드를 사용함

 

개체와 클래스의 관계

  • 클래스를 인스턴스 한 결과가 개체

클래스

  • 메서드와 필드의 집합체
  • 클래스 안에는 메서드가 n개 이상 있음
  • 클래스 안에 필드(전역변수)가 n개 이상 있을 수 있음(없어도 됨)
  • 선언할 때, class를 사용

클래스 만드는 방법

개체를 선언(인스턴스)

  • 개체 : 클래스의 변수
  • New 키워드 사용
  • ex MyClass m = new MyClass();
  • 인스턴스 결과물  m(m이 개체임)

인스턴스 생성

 

개체에서 주의할 키워드

  • this 예약어 : 개체가 자기 자신을 가리키는 키워드
  • 상속 및 외부에서 호출할 때 이름이 같을 경우 구분할 경우 사용

this 예약어

클래스도 접근 한정자를 사용

  • 은닉성(Encapsulation)
  • 최소한의 기능만을 노출하고 내부는 모두 감추는 것
  • 상속성과 다형성과 함꼐 OPP의 3대 특성
  • 대체로 필드는 모두 감추고 메서드는 꼭 노출이 필요한 것만 공개

접근 한정자 특징

2. 클래스의 이해 - 개체지향의 상속

상속이란

  • 이미 만들어진 클래스를 새롭게 만든 클래스에서 상속을 받는 것
  • 부모 클래스의 모든 기능은 자식(파생) 클래스에서 사용할 수 있음
  • '파생 클래스 : 기반클래스' 입력하여 사용

개체도 변수이므로 형변환이 가능함

  • is 연산자 : 객체가 해당 형식에 해다하는지를 검사하여 그 결과를 bool값으로 반환
  • as 연산자 : 형식 변환 연산자와 같은 역할
  • 다만, 형변환 연산자가 변환에 실패하는 경우 예외를 던지는 반면에 as 연산자는 객체 참조를 null로 만든다는 것이 다름

3.  오버라이드와 다형성

개체 지향에서의 다형성(Polymorphism)

  • 개체 지향에서 다형성은 개체가 여러 형태를 가지다는 의미
  • 즉 상속 받은 클래스내에 같은 이름의 메서드를 구현하면서 기능을 추 가하거나 그대로 사용할 수 있음
  • 쉽게 말해 부모 클래스의 메서드를 다시 재 정의 할 수 있는 기능 : Overriding (오버라이딩)

 

오버라이딩(Overriding) & 오버라이드

  • 부모 클래스에 있는 메서드를 내가 다시 만드는 것
  • 다시 만들기 위해서는 부모 클래스에 특정 키워드가 있는 것을 재 정의 할 수 있음
  • 키워드 : virtual

Sealed 한정자

  • 메서드에 사용하면 손자까지 상속 불가
  • 클래스에서 사용하면 상속 불가 클래스
  • 실제 이를 이용하여 상용 컴포넌트 개발회사들이 만든 기능을 숨김 및 상속 불가 등으로 구성하여 제품을 판매함

Namespace

  • 클래스들의 묶음
  • 네임스페이스는 비슷한 기능의 클래스들을 묶어서 관리할 때 사용
  • 실무에서는 하나의 .exe파일에 하나의 네임스페이스를 사용(여러개 쓰기도 함)
  • 네임스페이스는 비슷한 기능을 하는 클래스들을 폴더로 구분하여 관리하는 것이 더 유리함