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();
}
}
}
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 : 참조 연산자
- 힙(Heap)에 메모리를 할당하기 위해서는 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 클래스();
- "개체.멤버명"
- 클래스 개체 = new 클래스();
-7. 개체 지향 프로그래밍 === 묶어서 관리
- Object Orientied Programming(OOP)
- 현실 세계를 모델링(추상화)하여 프로그래밍화한 것
- OOP는 S/W 개발을 좀 더 쉽고 편리하게 하는 기술
- 사실 OOP는 현실세계와는 확연히 다름
- 현실 세계를 모델링(추상화)하여 프로그래밍화한 것
- 개체 지향 프로그래밍 언어
- C++/C#/Java
- OOP의 3가지 큰 개념
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polumorphism)
- 특징
- 재 사용성(ReUser)
- Component Based Develpment
- 재 사용성(ReUser)
Author And Source
이 문제에 관하여(C#교과서 마스터하기 21. 객체(Object)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ansalstmd/C교과서-마스터하기-21.-객체Object저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)