Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

Develop/C# 과 객체지향

클래스

sm_amoled 2018. 12. 29. 19:16

클래스 Class

단순히 기본 자료형만으로는 모델링을 하기에 제약이 너무 크다. 따라서 원하는 객체의 타입을 새롭게 정의하여 사용할 수 있게 해주는 것이 클래스의 역할.
클래스 내에서는 속성과 행위를 개발자가 정의하여 사용할 수 있다. 

클래스로 타입이 정의되면 참조형으로 분류되기 때문에 메모리 할당이 필요하다. ( C에서의 malloc과 같은 작업이 필요 = new )


Book guliver = new Book("guliver");



Book : "Book"이라는 클래스를 자료형으로 가지는
guliver : gulliver 라는 식별자를 가지도록 선언
new Book : Book의 크기만큼 메모리를 할당
("guliver") : 인자로 guliver를 전달해 Book에 값을 초기화


필드 Field

클래스 정의에서 '속성'에 해당하는 것. ( 변수의 개념 )
접근연산자 ( . ) 을 통해 사용.
멤버 변수 ( member variable ) 이라고도 부른다.

메서드 Method

클래스 정의에서 '행위'에 해당하는 것. ( 함수의 개념 )
C에서 함수를 정의하는 방식과 거의 비슷하다.
접근연산자 ( . ) 을 통해 사용.

코드의 반복을 회피하고, 에러 수정이나 유지보수에 용이하다.

메서드 내부구조를 모르더라도 Input Output의 의미를 안다면 사용할 수 있다. <- Black Box 라는 이름이 붙은 이유


생성자 Constructor

생성자를 추가해두면 클래스에서 객체가 생성되는 시점에 생성자 메서드가 자동으로 호출된다.
new -> 객체의 생성자 호출 + 초기화

class A

{

string B;

public A ( string C )

{

B = C;

}

}


클래스와 같은 이름을 가지는 것이 특징.


생성자를 명시한다면 기본 생성자가 작동하지 않기 때문에 오류가 발생할 수 있다.

여러개의 생성자 정의 또한 가능하다.


소멸자 destructor

~클래스명 으로 선언할 수 있다.
가비지콜렉터에 의해 메모리를 free 할 때 호출된다. ... 불확실한 시점에 작동한다.

현재 시점에서는 사용하지 않는 기능이라고 봐도 무방할 듯 하다.

인스턴스 멤버와 정적 멤버 instance member & static member

인스턴스 : 타입을 실체화한 객체, new를 통해 메모리에 할당된 객체
정적 : 해당 타입에 전역적으로 작용하는 멤버, static 예약어를 통해 사용, new로 객체 생성과 무관하게 사용 가능하다.

정적 생성자 : static member 를 초기화 하는 기능, 매개변수는 포함불가능하며, 단 한 번만 실행된다.

네임스페이스 namespace

중복되는 class의 이름 구분하는 역할     -> 같은 이름의 클래스라도 다른 네임스페이스에 들어있으면 다른 클래스.
많은 클래스를 분류하는 역할                 -> Header와 비슷한 역할을 하는 것으로 보인다.

같은 네임스페이스 내에서는 namespace를 명시할 필요가 없지만, 다른 namespace에서 원하는 클래스를 쓰고싶다면 namespace.class.member를 통해 접근할 수 있다.

Using 예약어를 코드 맨 위에 선언하여 객체가 속한 네임스페이스를 자동으로 찾아 적용시켜 개발에 편리하게 이용할 수 있다.

FQDN

Fully Qualified Domain Name
네임스페이스까지 명시해달라는 말 ( Console -> System.Console )





320x100

'Develop > C# 과 객체지향' 카테고리의 다른 글

상속 (2)  (0) 2019.01.02
상속 (1)  (0) 2019.01.01
캡슐화  (0) 2018.12.30
객체지향 프로그래밍  (0) 2018.12.27
C# 공부를 시작하며  (0) 2018.12.27