SSISO Community

갤러리정

객체, 클래스, 인스턴스 - CSharp

객체지향
 - 절차 지향 프로그래밍 : 기능이나 동작 절차를 나열한 형태
 - 객체 지향 프로그래밍 : 기능 위주가 아닌 객체 위주의 프로그래밍, 이벤트 위주

 

 객체(Encapsulation)
 - 데이터 + 프로시저
 - 독자성(Indentity) : 객체는 다른 객체와 구분
 - 상태(State) :  객체의 상태(객체만의 데이터)
 - 행동(Behavior) : 객채의 행동(메소드, 프로시저)
 - 실세계 객체를 모델링해서 소프트웨어 객체 생성

 

 캡슐화(Encapsulation)
 - 내부 정보 은닉화
 - 외부에서 객체 내부의 데이터를 함부로 접근 불가
 - 객체 내부를 몰라도 객체 사용가능
 - 간결한 코드 작성 : 내부 아키텍처를 몰라도 공개된 인터페이스만 알면 코딩 가능
 - 모듈화 : 모든 내부 코드가 객체 내에 기술
 - 정보은닉 : 객체내 데이터는 공개된 메소드를 통해서만 제어 가능

 

 메시지(Message)
 - 객체끼리 주고 받는 명령 혹은 정보(통신)
 - 파라미터를 통해 출력결과를 다양하게 반환
 - 객체의 메소드
 - 모든 기능을 하나의 객체에 집중할 필요 없음 -> 특정 기능 필요시 그 객체와만 대화

 

 객체 & 클래스
 - 클래스는 객체에 대한 설계도

 

 클래스 & 인스턴스
 - 인스턴스는 클래스를 실제 구현한 객체
 - 인스턴스로 객체 생성시 다양한 객체를 생성(Indentity, State...)

 

 클래스 상속(Inheritance)
 - 슈퍼클래스(Super Class) :  자신을 상속하는 클래스(부모클래스, 기본클래스)
 - 서브클래스(Sub Class) :  상속을 받는 클래스(자식클래스, 파생클래스)
 - 서브클래스는 슈퍼클래스의 변수 및 메소드를 상속받는다
 - 상속 전의(Transition) :  부모의 메소드를 자식, 손자, 증손자에게 계속 전달

 

 다형성(Polymorphism)
 - 클래스는 다양한 형태를 가질 수 있다.
 - 오버라이딩(Overridion), 오버로딩(Overloadiong)
 - 중복정의 or 재정의를 통해서 구현

 

클래스(Class)

 

클래스멤버(Class Member)
- 클래스를 구성하는 요소
- 필드(Field) : 필드 or 멤버변수
- 메소드(Method) : 객체행동
- 프로퍼티(Property) :  특성, 속성,.. 밖에서 보기엔 멤버 변수지만, 내부적으로  메소드
- 상수(Constant) : 읽기전용
- 인덱서(Indexer) : 스마트 배열
- 이벤트(Event)
- 연산자(Operator) : 연산자 오버로딩

 

접근제한자(Access modifier)
- 클래스 멤버의 보안제어
- 캡슐화, 내부은닉화
- public, private, protected, internal

 

public
- 클래스 멤버를 공개하고자 할때..(인터페이스)
- 보통 데이터는 은닉화, 메소드는 공개
- 누구나 사용가능, 클래스 내부, 파생 클래스, 클래스 외부

 

private
- 멤버를 포함한 클래스 내부에서만 접근가능
- 가장 엄격한 수준의 접근 제한자
- 보통 데이터의 접근 제한자.

 

protected
- 클래스 내부와 파생클래스에서만 접근가능
- 클래스 자신과 파생 클래스(상속받은 클래스)에서만...
- 반드시 동일어셈블리는 아니다.

 

internal
- 동일 어셈블리내에서 접근가능
- 외부에서 참조할 일이 없을 경우(참조해선 안되는 경우)
- 내부에서만 사용해야 하는 경우

 

protected internal
- 동일 어셈블리안에 있는  파생 클래스에서만 가능

 

기본 접근 제한자
 - class : private
 - 멤버 : private
 - struct : private
 - enum : public
 - interface : public


1166 view

4.0 stars