반응형
아래 글은 C# 개체(Object) 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 32단원 개체 만들기 441 ~ 451페이지
- 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 32. 개체 만들기]
- 닷넷코리아 (https://www.dotnetkorea.com/)
https://www.youtube.com/watch?v=N9EgE6bKV_A
✳ 개체(Object)
- 설계도인 클래스로부터 만들어진 하나의 인스턴스(실체, 구성요소)
✳ 클래스와 개체(Object)
- 설계도로부터 만들어진 하나의 개체
- 설계도로부터 인스턴스화 된 하나ㅏ의 개체를 Object라고 한다.
* 개체 생성을 위해서는 클래스에 대한 이해 꼭 필요
✳ 클래스
- 데이터 보관 관점
- 하나의 이름으로 여러 개의 데이터 형식을 여러 개 보관해 놓는 그릇 역할에 어떠한 기능 추가해 함께 묶어서 관리
✳ 클래스의 의미
- 현실 세계의 자동차(개체)를 만들어내는 설계도(클래스)의 의미
- 프로그램 세계의 데이터 저장공간(필드)과 기능(메서드)을 하나의 이름(클래스명 / 개체명)으로 관리
- 클래스는 관련있는 메서드 및 데이터의 그룹
- 클래스는 컨테이너(Container) 역할
-> 클래스의 인스턴스인 개체는 하나의 완성된 단위
✳ 클래스(Class)와 개체(Object)의 비교
클래스(Class) | 개체(Object) |
- 개체를 생성해 주는 틀 | - 어떤 클래스의 인스턴스 |
- 개체들의 특성들을 기술 | - 개체마다 각각의 상태 보유 |
- 개념적, 가상적 | - 물리적, 실제적 |
- 프로그램 텍스트상에서만 존재 | - 실행 시에만 존재 |
- 디자인 단계에서의 관심사 | - 실행 단계의 관심사 |
✳ 개체(Object, 객체)
- 클래스의 인스턴스
- 자동차 설계도: 클래스
- 만들어진 하나의 자동차: 개체(Object)
✳ 개체(Object) 생성 순서
- 메모리 할당
- 힙(Heap)에 메모리를 할당하기 위해서는 new 키웓드를 사용
* new: 참조 연산자 - 생성자를 통한 개체 초기화
- 클래스의 이름과 괄호 기호를 사용
ex) Date 클래스의 인스턴스(실체) 생성 => when 개체 생성
-> Date when = new Date();
✳ 개체(Object) 라이프사이클
- 개체 생성 시기
- new 연산자를 이용한 메모리를 할당하고 개체를 생성
- 생성자를 이용해 메모리 상의 개체 초기화 - 개체 사용 시기
- 개체에 대한 메서드, 멤버 호출 / 접근 - 개체 소멸 시기
- 개체에게 할당된 메모리는 실행 환경으로 회수
- 메모리 해제
- 소멸 시기가 비결정적임
- Garbage Collector(GC)가 개체 소멸을 관장한다.
✳ 클래스(Class) 라이프 사이클
- 할당(Allocation)
- Managed heap 메모리 공간에 CLR에 의해서 개체를 위한 메모리 할당 - 인스턴스화(Instantiation)
- 클래스의 구조에 맞게 메모리 초기화
- 클래스의 생성자(Constructor)가 호출 됨 - 해제(Deallocation)
- 가비지 수집기 (Garbage Collector)가 사용되지 않는 개체를 소멸
- 경우에 따라서는 IDisposable 인터페이스를 구현하여 Dispose 메서드를 구현 할 수 있음
✳ 정적(Static) 멤버와 인스턴스(Instance) 멤버
- 정적(Static) 멤버: Static 키워드가 붙은 멤버
- 정적 필드
- 정적 메서드
- 접근
ex) "클래스명.멤버명" - 인스턴스 멤버
- 클래스내에서 Statiic 키워드가 붙지 않은 멤버
- 클래스의 인스턴스 생성 후 멤버에 접근
- Static 키워드 제거
- 접근
-> 클래스 개체 = new 클래스();
-> "개체.멤버명"
✳ 클래스(Class)
- 데이터(멤버 변수; 필드)와 메서드(기능; 함수)를 결합
- 접근 권한의 통제
- 메서드는 public, 외부로부터 접근이 가능
- 데이터(멤버)는 public, protected, interval, private - 상속(Inheritance)
- 상속은 클래스간의 관계
- 기존의 클래스를 상속 받아 새로운 클래스를 만든다.
- 단일 상속 및 다중상속 가능(Interface에 의해) - 인터페이스(Interface)
- 단지 operation 만으로 구성되어져 있음
- 실제 구현을 가지지 않음
✳ 개체생성 예제코드
using System;
namespace 개체
{
//[1] 클래스 생성
public class MyClass
{
public void MyMember()
{
Console.WriteLine("클래스의 인스턴스인 개체가 실행됩니다.");
}
}
public class 개체
{
public static void Main()
{
//[2][1] 클래스 사용: 클래스의 인스턴스를 생성해서 개체를 만든다.
MyClass my = new MyClass();
//[2][2] 개체(인스턴스)명.멤버명으로 클래스의 멤버를 호출
my.MyMember();
}
}
}
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 소멸자(Destructor) (0) | 2021.06.05 |
---|---|
C# 네임스페이스(Namespace) (0) | 2021.06.04 |
C# 널(Null) (0) | 2021.06.02 |
C# 컬렉션(Collection) (0) | 2021.06.01 |
C# 제네릭(Generic) 사용하기 (0) | 2021.05.31 |