본문 바로가기

C#17

프로퍼티 프로퍼티: 밖에서 보면 변수처럼 처리하지만 안에서 보면 특수한 처리 넣을 수 있는 기능 바깥에서는(Test.cs) point가 함수처럼 내부 처리가 들어간다는 사실을 숨김으로써 마음 편하게 사용할 수 있게 함. 함수로 만들면 똑같이 구현을 할 수 있지만 코드가 복잡해지거나 심적인 부담감이 있음. 그레서 밖에서는 변수처럼 편하게 사용하고 안에서는 어떤 처리를 넣어서 코드를 간단하게 말들 수 있음. 또 다른 예시 2021. 7. 19.
추상 클래스 추상 클래스: 자식에게 자기가 가지고 있는 멤버나 함수를 상속시켜주지만 동시에 자기자신은 껍데기같은 것이라서 인스턴스화가 안됨(실시간으로 생성이 안됨) - 일반적인 클래스와 인터페이스의 중간정도 역할 - 인터페이스와 유사한데 인터페이스와 다른 점이라면 인터페이스는 맴버변수를 가질 수 없음(값을 가질 수 없음) 반면 추상클래스는 내부 값은 가질 수 있지만 찍어낼 수 없도록 강제됨. 인터페이스의 한계: 순수하게 함수 껍데기 자체만 들어갈 수 없고 멤버 변수나 구현물이 들어가있는 함수가 못들어감. 원하는 것: 어느정도 구현물이 들어가있었으면 좋겠다. 추상 클래스 만들기 클래스 앞에다 abstract 붙이기 추상 클래스는 함수 앞에다 abstract를 붙일 수 있음 인터페이스와 달리 실제 구현물도 어느정도 표현.. 2021. 7. 19.
인터페이스 인터페이스: 상속 받는 클래스에게 무조건 어떠한 함수나 프로퍼티를 만들도록 강제하는 장치 이걸 사용하면 상대방 타입을 일일이 개별로 추측할 필요 없이 한번에 인터페이스로써 다룰 수 있음. 인터페이스 사용하는 경우: 아이템 구현하거나 몬스터, 혹은 플레이어의 직업을 구현할 때 상대방 아이템, 몬스터, 플레이어 직업에 상관 없이 공통적인 기능을 한번에 묶어서 처리할 때 인터페이스를 씀. 인터페이스가 없는 경우: 우선 코드를 설명하면 밑의 스크립트는 Player.cs 안의 OnTriggerEnter2D 함수로, Collider2D other에는 충돌한 상대방이 들어옴. 충돌한 상대방을 가져와서 만약 그 친구가 GoldItem이나 HealthKitItem을 가지고 있으면 Use함수를 발동시켜서 아이템을 사용하는.. 2021. 7. 19.
오버라이드 오버라이드 : 부모 클래스에서 만들어놓은 함수를 자식 클래스에서 덮어씌워서 자기만의 것으로 새롭게 만드는 것 BaseRotator라는 부모 클래스를 만들고 회전은 자식들이 알아서 하는 스크립트를 만들고싶다! 즉 자식들이 Rotator 함수 안의 내부 구현을 맘대로 덮어씌우게 구현하고 싶다. BaseRotator은 그저 Rotate 함수만 돌리도록. virtual : 자식들이 덮어씌울 수 있다는 의미 즉 이친구가 가상으로써 존재하고, 다른 친구들이 덮어씌워서 진짜로 대체할 수 있다는 의미. 이제 Rotate는 자식들이 덮어 씌워 갈아치울 수 있음! 물론 덮어쓰지 않는다면 그대로 존재하고 덮어씌우면 덮어씌운채로 존재하는거고 부모 클래스인 BaseRotator 외에 각각 방향으로 회전시킬 자식 클래스들인 X,.. 2021. 7. 18.
상속 + 다형성, 집합 상속 : 베이스 클래스를 가져와서 그 위에 나만의 클래스를 확장해서 짓는 것. 따라서 코드 재활용 할 수 있고 구조 간결하게 할 수 있다. 다형성 : 상속에서 나오는 특징인데, 여러가지 베이스 클래스에서 파생된 여러 클래스들을 한번에 관리할 수 있음 상속과 다형성을 잘 활용하면 코드 구조를 간결하게 + 재활용 할 수 있음. 상속 Animal.cs Test.cs 부모-자식 관계에서 부모 클래스에서 private는 자식 클래스에서 보이지 않음! 부모 클래스의 GetSpeed는 public이라 자식에서 쓸 수 있으나 단, CalcSpeed()의 자세한 풀이 과정은 숨겼기 때문에(private) 자식에서 쓸 수 없음. 자식까진 public 보여주게 하고 싶으나, 쌩 외부의 클래스에서는 못보게 숨기고 싶음 이럴 .. 2021. 7. 18.
리스트(List) 리스트는 배열과 비슷하게 여러가지 게임 오브젝트를 한번에 다루게 해줌! 하지만 배열과 달리 방의 갯수가 실시간으로 변화하던지 실시간으로 게임 오브젝트를 넣거나 뺄 수 있음. - 리스트가 필요한 상황 배열을 쓰면 한번 방의 갯수가 정해지면 그 방을 늘려서 뭔가를 집어넣을 수가 없음. 방의 개수를 늘릴 수 있는 유일한 방법은 건물을 통째로 무너트리고 새로 짓는 것 밖에 없음. 만약 기존 값들을 유지하고 싶으면 기존 배열에 있던 모든 값들을 순회해서 새로운 배열에 넘겨주는 수 밖에 없음. 이럴 때 리스트가 필요함. 리스트는 배열과 달리 방의 갯수를 정하는 게 아니라 방의 갯수가 들어오는 사람 만큼 생김. 배열과 달리 총 개수를 알 수 없을 때 씀. - 리스트 사용법 리스트 선언할 때 using System.C.. 2021. 7. 13.