CS, Class, 메모리 구조, 팀 프로젝트 2일차

유승아·2024년 4월 30일

내일배움캠프

목록 보기
33/69

cs란?

cs = C#을 다룰 수 있는 파일
cs 안에는 class를 여러 개 생성할 수 있다.

이중클래스는 경우에 따라 써야할 일이 있을 지도 모르지만,
기본적으로 사용하지 않는다.


class가 뭐지?

플라톤의 철학을 받아들인 것 - Class 개념
이데아 : 존재하지 않는 완벽한 실체

여러 가지 실제 개체들을 하나로 묶을 수 있는 개념
실제에 존재하는 모든 것들의 공톰점을 묶어 놨다(공통점 = 본질)

아리스토텔리스의 철학을 받아들인 것 - Prototype 개념

여기서 사과 = 최상위 클래스

Apple apple = new Apple(); < 객체화, Instance화
사과라는 추상적인 것의 실체를 만듦

사과를 사는 행위를 new 할당이라고 이해하면 좀 쉽게 이해될 거 같아요


메모리의 구조

코드 영역

코드 그 자체

데이터 영역

static을 씀으로써 데이터 영역으로 간다.

데이터 영역으로 보내줘야 할 때? ex) *싱글톤
프로젝트 전반에 필요한 데이터를 공유할 때(GameManager 등)

싱글톤 : 객체화시킨 것을 실제 세계에 1개만 만들어놓겠다.

코드가 돌아갈 때 힙/스택 어느 영역을 사용하는지 알기.

힙 영역

데이터가 위에서부터 할당된다.

스택 영역

데이터가 아래서부터 할당된다.

선언은 스택 영역으로 간다.
값도 선언을 했을 때의 영역으로 들어간다.

선언과 주소값은 스택으로, 데이터는 힙으로 들어간다.

인스턴스화 시키는 키워드 new

같은 Person이여도 각자 다른 주소값을 가지고 있다.
→ 별개의 Person이 생성된 것이다.

같은 주소값을 할당받은 경우.
하나가 바뀌면 다른 한 개도 바뀐다.

스택에서 같은 주소값이 할당된 것을 확인할 수 있다.


초기 데이터 세팅하기.
대신 아래와 같은 준비가 필요함

필드와 생성자

사과로 연습해보기

    class Apple
    {
        public int sweet = 5;
        public float hardless = 2.0f;
        public Color color = Color.Green;
        public string name = "Aori";
        public string productLocation = "An-dong";

        public Apple(int _sweet, float _hard, Color _color, string _name, string _pl)
        {
            sweet = _sweet;
            hardless = _hard;
            color = _color;
            name = _name;
            productLocation = _pl;
        }

        public Apple(string _pl)
        {
            productLocation = _pl;
        }

        //기본 생성자
        public Apple()
        {

        }
    }
    
    internal class Program
    {
        static void Main(string[] args)
        {
            //인스턴스화
            Apple hongro = new Apple(6, 4.0f, Color.Red, "hongro", "Cheongsong");
            Apple aori = new Apple();
            Apple chungju = new Apple("choongju");

            List<string> list = new List<string>();
        }
    }

내가 맡은 기능을 완성하여 push 했지만 팀원들이 원하는 기능이 아니었다.
다른 사람이 작성한 코드를 활용하여 기능을 만드는 것도 어렵지만,
내가 구상한 것과 팀원이 구상한 기능이 상이한 것 또한 매우 힘든 일이다.

그래서 수정 작업을 하게 되었고, 아직 진행 중이다. 😭

0개의 댓글