본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 개체(Object) 만들기

by 공부하는개미 2021. 6. 3.
반응형

 

 

아래 글은 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) 생성 순서

 

 

 

  1. 메모리 할당
    - 힙(Heap)에 메모리를 할당하기 위해서는 new 키웓드를 사용
    * new: 참조 연산자
  2. 생성자를 통한 개체 초기화
    - 클래스의 이름과 괄호 기호를 사용


    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