C#교과서 마스터하기 21. 객체(Object)

https://www.youtube.com/watch?v=N9EgE6bKV_A&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=53

1. 개체(Object)

using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace testProject
{
    class Program
    {
        // Car Class
        public class Car
        {
            // 필드
            private string name;
            private int oil;

            // gettersetter method
            public string Name { 
                get { return name; } 
                set { name = value; } 
            }
            public int Oil {
                get { return oil; } 
                set { oil = value; } 
            }

            // method
            public void CarName() => WriteLine(name);

        }

        static void Main(string[] args)
        {
            // instance
            Car car1 = new Car();

            // call method
            car1.Name = "레이";
            car1.CarName();
        }

    }
}

  • 설계도인 Class로부터 만들어진 하나의 Instance(실체, 구성요소)

01. 클래스 생성 방법 및 구성 요소

-1. 클래스 기본 구조

  • [액세스한정자] class 클래스명 {}
    • public class MyClass {}

-2. 클래스 구성요소

  • 클래스, 필드, 속성, 메서드, 생성자, 소멸자, 기타

02. 클래스

  • 데이터(멤버변수; 필드)와 메서드(기능;함수)를 결합
  • 접근 권한자의 통제
    • 메서드는 public, 외부로부터 접근이 가능
    • 데이터(멤버)는 private, 내부에서만 접근 가능
    • public, protected, internal, private
  • 상속(Inheritance)
    • 상속은 클래스간의 관계
    • 기존의 클래스를 상속 받아 새로운 클래스를 만든다
    • 단일상속 및 다중 상속 가능(Interface에 의해)
  • 인터페이스(Interface)
    • 단지 operation만으로 구성되어져 있음
    • 실제 구현을 가지지 않음
  • 데이터 보관 관점
    • 하나의 이름으로 여러 개의 데이터 형식을 여러 개 보관해 놓는 그릇 역할에 어떠한 기능 추가해서 함께 묶어서 관리
  • 클래스의 의미
    • 현실 세계의 자동차(개체)를 만들어내는 설계도(클래스)의 의미
    • 프로그램 세계의 데이터 저장 공간(필드)과 기능(메서드)을 하나의 이름(클래스명/개체명)으로 관리
    • 클래스는 관련있느 메서드 및 데이터의 그룹
    • 클래스는 컨테이너(Container) 역할
      • 클래스의 인스턴스인 개체는 하나의 완성된 단위

03. 개체(Object, 객체)

-1. 클래스와 개체의 비교

-2. 개체(Object)

  • 클래스의 인스턴스
    • An instance of a Class
  • 자동차 설계도 : 클래스
  • 만들어진 하나의 자동차 : 개체(Object)

-3. Object 생성 순서

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

-4. Object Life Cycle

  • 개체 생성 시기

    • new 연산자를 이용한 메모리를 할당하고 개체를 생성
    • 생성자를 이용해 메모리 상의 개체 초기화
  • 개체 사용 시기

    • 개체에 대한 메서드, 멤버 호출 / 접근
  • 개체 소멸 시기

    • 개체에게 할당된 메모리는 실행 환경으로 회수
    • 메모리 해제
    • 소멸 시기가 비결정적임
    • Garbage Collerctor(GC)가 개체 소멸을 관장

-5. Class Life Cycle

  • **할당(Allocation)
    • Managed heap 메모리 공간에 CLR에 의해서 개체를 위한 메모리 할당
  • 인스턴스화(Instantiation)
    • 클래스의 구조에 맞게 메모리 초기화
    • 클래스의 생성자(Constructor)가 호출
  • 해제(Deallocation)
    • Garbage Collector(GC)가 사용되지 않는 개체를 소멸
    • 경우에 따라서는 IDisposable 인터페이스를 구현하여 Dispose 메서드를 구현

-6. 정적(Static) 멤버와 인스턴스 멤버

  • static 멤버
    • static 키워드가 붙은 멤버
    • 정적 필드
    • 정적 메서드
    • 접근
      • "클래스명.멤버명"
        • Math 클래스
  • instance 멤버
    • 클래스 내에서 static 키워드가 붙지 않은 멤버
    • 클래스의 인스턴스 생성 후 멤버에 접근
    • static 키워드 제거
    • 접근
      • 클래스 개체 = new 클래스();
        • "개체.멤버명"

-7. 개체 지향 프로그래밍 === 묶어서 관리

  • Object Orientied Programming(OOP)
    • 현실 세계모델링(추상화)하여 프로그래밍화한 것
      • OOP는 S/W 개발을 좀 더 쉽고 편리하게 하는 기술
      • 사실 OOP는 현실세계와는 확연히 다름
  • 개체 지향 프로그래밍 언어
    • C++/C#/Java
  • OOP의 3가지 큰 개념
    • 캡슐화(Encapsulation)
    • 상속(Inheritance)
    • 다형성(Polumorphism)
  • 특징
    • 재 사용성(ReUser)
      • Component Based Develpment

좋은 웹페이지 즐겨찾기