- foreach (모든 컬렉션을 순회할 수 있도록)
- hashset 같은 경우엔 for문으로 돌리기가 힘들다
- foreach (각 원소의 타입~~) -> 파이썬 같음
- 이런식으로 고칠 수가 있음
- 유닛을 돌면서 cloaking 이 가능하면 cloaking 을 하려고 함!
- 강제 캐스팅은 부모타입으로만 할 수 있음
ex) ((Wrath)unit).Cloak(); 하려면 마린이 Wrath가 절대 될 수없음
- is/as 연산자 -> 완전 객체 지향적인 코드!!!
-> 면접시 어떤 상황에서 is/as 를 써보았냐 - 정말 코딩 해본 사람만이 답할 수 있는 질문,,, ㄷㄷ
- c# 7.0에서만 사용가능함 - 이렇게 되면 as 안써도 됨
- FlyBy랑 Cloak을 사용하기위해서 이제 interface를 사용해야함
interface
- 파이썬은 동적언어라 이러한 기능이 없음
- 동적언어는 실행될때 타입체크를 안하기 때문에 실행시 검사하기떄문에,,,,,,,, "duck typing"
- Fly라는 계약만 가지고 있다면 어떤것을 가져와도 상관 x
- interface는 fly를 가지고 있다는 어떤 보장을 하는 것
- 인터페이스는 관습적으로 앞에 i를 붙여줌
1. IFlyable.cs 만들어주기
2. interface는 접근지정자가 없다
3. Icloakable.cs 만들기
- 인터페이스는 오직 메서드, 프로퍼티, 만 넣을 수 있음 (1개더있는데 못들음 ㅠ)
4.
* 생기는 문제
-> 타입을 검사해 주어야 함
- 아래와 같이 검사하고 캐스팅 해주어야 함 !
- 결과 -> 하지만 코드는 여전히 맞지 않음!
* 마린이 cloak을 갖도록 해줘보자
- 인터페이스는 상속하는 클래스가 있으면 그뒤에 ,찍고 써주면 됨!
- 다이아몬드 상속 : 좀 위험함 문제가 있음 하위 클래스가 둘중 어느쪽을 상속받는지 명확하지 않기떄문에
* 인터페이스 안에 함수들이 구현이 안되있으면 컴파일 에러가 뜸
->이렇게 추가해주면 컴파일 에러가 사라진 것을 볼 수있다. 하지만 마린은 cloaking 을 구현할 필요가 없기 때문에 지우고 다크템플러에게 인터페이스 상속을 해주러 갑시다~~~~~
-> 캐리어에게 인터페이스를 상속시켜 플라이를 동작시켜준 모습
* 클래스를 두개 다 상속 받지 못하기 때문에 생겨난 개념이 interface
파이썬 같은경우는 다중상속이 가능하기때문에 interface가 없음!
이해를 쉽게하려면 ~~할수있는, ~able로 받아들이는 것이 좋음 ~~의계약, ~~의 보장이라고 이해하면 됨.
-> 여기까지가 객체지향의 기본 개념 ,, ,ㅎ ㅎㅎ,ㅎ,ㅎ, ㅎ
* 인터페이스는 상속이 아닌 구현이다!!!!!!
- 다크템플러는 Icloakable 인터페이스를 상속한다 (X) -> 부채를 물려받는 개념!
* 인터페이스가 다른 인터페이스를 상속할 수도 있음 -> 이건 상속 -> 그러나 보통 이렇게까지 복잡하게 쓰진 않음
* 메멘토패턴
'Archive' 카테고리의 다른 글
0925 서버프로그래밍 MSSQL_SERVER DB (0) | 2019.09.25 |
---|---|
0924 서버프로그래밍 (0) | 2019.09.24 |
0906 09-가상메서드-추상메서드 (0) | 2019.09.06 |
0906 서버프로그래밍 기초3 (0) | 2019.09.06 |
0905 FackCraft (0) | 2019.09.05 |