day 7 클래스 상속

2021. 7. 27. 20:01·강의/부캠 안드로이드 학습정리
return this.file == other.file && this.rank == other.rank

체스 만드는건데 이거 가지고 클래스 상속을 코틀린에서 연습해봤다.

어제 다른사람이 한거 따라해서 try catch로 예외처리도 해봤음.

enum으로 상수 처리를 할 수 있다는데 이건 몰라서 안했다. 내일 잘 봐야지.

어제꺼 정규표현식

정규표현식 기초 https://poqw.tistory.com/26

 

"코딩용으로 monospaced font 고정폭 글꼴을 한 번 찾아보세요. 공개된게 많이 있습니다."

 


import java.util.regex.Pattern

if(Pattern.matches("[A-H][0-9]->[A-Z][1-8]", input)){

enum string으로 사용하는 방법 등

'\u265F' 나 "\u265F" 형식으로 유니코드 가져올 수 있는듯.

 

class Knight(color: String, type: String, shape: String, position: Position) : Piece() {
    //    ♔♕♖♗♘♙♚♛♜♝♞
    init {
        this.color = color
        this.type = type
        this.shape = shape
        this.position = position
    }

대신

class Knight(val color: String, val type: String, val shape: String, val position: Position) : Piece() {
    //    ♔♕♖♗♘♙♚♛♜♝♞

이런식으로 init 할 수 있는 듯.

 

//체스말 종류에 따른 처리
        val piece: ChessPiece = when(type){

            "Pawn" -> {
                val cntPawn = if(cntMap[key] == null) 0 else cntMap[key]
                if (cntPawn!! >= maxPawn) {
                    throw Exception("$team $type 체스말 입력 초과!")
                }
                cntMap[key] = cntPawn+1

                Pawn(Position(strPos), black)
            }

            "Bishop" -> {
                val cntBishop = if(cntMap[key] == null) 0 else cntMap[key]
                if (cntBishop!! >= maxBishop) {
                    throw Exception("$team $type 체스말 입력 초과!")
                }
                cntMap[key] = cntBishop+1

                Bishop(Position(strPos), black)
            }

when으로 변수 다르게 받기

\t으로 간격 일정하게 추가가능

 

abstract class ChessPiece(var position: Position, val black: Boolean) {

class Knight(pos: Position, bl: Boolean) : ChessPiece(pos, bl) {
enum class File{
    A, B, C, D, E, F, G, H
}

enum class Rank{
    R1, R2, R3, R4, R5, R6, R7, R8
}

class Position(pos: String) {
    var file = File.valueOf(pos.substring(0,1))
    var rank = Rank.valueOf("R${pos.substring(1)}")

.valueOf 로 enum을 바꿀 수 있는듯.

 

return this.file == other.file && this.rank == other.rank

 

클래스가 너무 많아지면 패키지 폴더 만들고 분류해서 import, package로 사용하면 된다.

// 상위폴더 .kt에서
package chess_piece
import Position

// 하위폴더 .kt에서
import chess_piece.*

 

open class 대신 abstract class

throw를 하면 그 함수를 try로 실행한 곳으로 넘어가서 catch

내부에서만 쓰이는 함수면 private로 encapsulation을 지키자.

 

 

'강의 > 부캠 안드로이드 학습정리' 카테고리의 다른 글

day 9. git 저장소 만들기  (0) 2021.07.29
day 8. 코틀린의 함수형 프로그래밍  (0) 2021.07.28
day 6 xml, html parser 만드는데 너무 어려웠음  (0) 2021.07.27
day4. 공간 할당의 어려움..  (0) 2021.07.22
Day3. 코틀린 외부 라이브러리 불러와서 해보기.  (0) 2021.07.22
'강의/부캠 안드로이드 학습정리' 카테고리의 다른 글
  • day 9. git 저장소 만들기
  • day 8. 코틀린의 함수형 프로그래밍
  • day 6 xml, html parser 만드는데 너무 어려웠음
  • day4. 공간 할당의 어려움..
용나리
용나리
  • 용나리
    티스토리 블로그
    용나리
  • 전체
    오늘
    어제
    • 분류 전체보기 (333)
      • 과거의 것들 (93)
        • AI Tech boostcamp (92)
      • 생각정리(고찰) (2)
      • 기술 글 (0)
      • 코딩테스트 (4)
        • C++ (0)
        • Python (4)
      • CS (121)
        • 컴퓨터 시스템 (4)
        • 코틀린 인 액션 (13)
        • 김영한 스프링 강의 (104)
      • 일지 남기기용 (11)
        • 운동 (10)
      • 개발 배포 해보기 (1)
      • 프로그래밍 언어 및 기타 (32)
        • Spring Boot (9)
        • Python (9)
        • Kotlin (1)
        • Flutter (2)
        • SQL (4)
        • Docker (3)
        • 공통 (4)
      • os (4)
        • Linux (4)
      • 기술 (17)
        • PyTorch (6)
        • Computer Vision (6)
        • NLP (1)
        • 기타 (4)
      • 제품 후기 (0)
      • 게임 (0)
        • Human Resource Machine (0)
      • 강의 (26)
        • fullstackdeeplearning_sprin.. (9)
        • 부캠 안드로이드 학습정리 (17)
      • 개인 메모 (10)
      • IT 기타 (5)
      • 논문 읽기 연습 (5)
        • Computer Vision (1)
        • NLP (0)
        • 공통 (2)
        • 그냥 메모 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬 실행경로
    pip install killed
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
용나리
day 7 클래스 상속
상단으로

티스토리툴바