본문 바로가기

OOP

(6)
예외(Exception) 1. 정의 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 2. 일반 예외 vs 실행 예외 일반 예외(Exception) → Checked Exception 컴파일 시점에서 예외을 catch하는지 검사 → try/catch 하여 해결 실행 예외(Runtime Exception) -> Unchecked Exception 컴파일 시점에서 예외을 catch하는지 검사 X 예외 발생할 것인지 여부 판단 X 3. 종류 NullPointerException 해당 객체가 null인 상태에서의 접근을 했을 때 발생 fun main() { var nullableString: String? = null // 아래 줄에서 nullpointer 예외 발생 가능성 있음 val length: In..
디자인 패턴 디자인 패턴 - 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우 정리 - 자주 발생하는 문제에 대한 검증된 해결 1) Strategy (전략 패턴) --수정-- 2) Observer 패턴 - 코드에서 다른 객체의 상태변화를 관찰하는 패턴 - 예시 GUI : 아이디가 5자 이상인 경우, 5자를 입력해야지 버튼 활성화 채팅 프로그램 : 상대방이 입력하고 있습니다. 메세지 출력 3) Decorator 패턴 - 객체에 추가적인 요건을 동적으로 첨가 - 기본 특징 + 추가 4) Singletone 패턴 - 내부적으로 인스턴스가 1개만 존재 - 어디에서든 인스턴스에 접근 할 수 있도록 해주는 패턴 - 예시 유저 매니저 : 내부적으로 메모리에 User 정보 저장 클래스에서 User 생성하면 다른 클래스에서 정보..
OOP 정리 OOP (객체지향 프로그램) 1) 정의 - 유지보수가 편할 수 있도록 사물의 상태와 행동을 클래스로 구현 - 추상화, 캡슐화, 다형성, 상속화 2) 추상화 - abstract class - 공통된 상태와 행동들을 정의 + 공통되지 않은 것들을 숨겨서 분리 - 각 객체에 공통된 속성은 표시하고 불필요한 정보는 숨겨서 인터페이스와 정보 분리 abstract class Bus() { open fun startEngine(){ println("버스 엔진 시작") } open fun stopEngine(){ println("버스 엔진 정지") } //추상화 abstract fun drive() } class CityBus : com.example.oop.main5.Bus(){ override fun startEn..
Private Q : 엔진의 기어 단수를 관리하는 입장에서 알 필요가 없다. 내부에서 쓰이는 변수 어떻게 숨길 수 있나요? A : Private 정보 은닉 main에서 알 필요 없는 정보 숨김 abstract class Bus(val licensePlate: String) { private var engineGear:Int = 0 var departure = "서울" var arrive = "부산" fun engineStart(){ engineGear++ println("부릉부릉") println("$licensePlate 차량이 엔진을 켰습니다.") } open fun departure(){ println("출발합니다.") println("${departure}에서 ${arrive}로 출발합니다.") } } clas..
업 캐스팅, 다운 캐스팅 Q : 광역버스, 고속버스, 시내버스가 터미널에 모두 들어갈 수 있다. 시내버스는 못 들어가게 하려면? 1. enterTerminal 인터페이스 구현 2. EnterTerminal 인터페이스를 상속받는 클래스 3. EnterTerminal 인터페이스를 상속받지 않는 클래스 4. 배열 타입을 EnterTerminal 인터페이스로 생성 - CityBus 클래스는 EnterTerminal 인터페이스를 상속받지 않아서 - CityBus 클래스로 만든 객체는 배열에 넣어지지 않는다. 업 캐스팅 - 자식인 ExpressBus 타입에서 부모 Bus 타입으로 업캐스팅 - bus.engineStart() 오류 : Bus 클래스의 함수이므로 ExpressBus 타입으로 함수 불러올 시 오류 남 다운 캐스팅 - 부모 Bus..
객체 지향 프로그램 (OOP) 객체지향 프로그램 - 상태 (사물의 속성)와 행동(속성을 통해서 사물이 수행)을 가지는 객체 상태, 행동 - 상태 : 출발지 + 종착지, 남은 기름 양, 타이어 손상, 승객 수 - 행동 : 어딘가로 이동, 기름 사용, 엔진 시동 켬, 앞/뒷문 연다 공통점 - 모든 버스는 엔진 킬 수 있음 - 출발지와 도착지 있음 - n명 이상 탑승 가능 - 경유 공급 받음 상속 X 상속이 없이 계속해서 버스 추가(마을 버스, 호텔 셔틀 버스, 공항 셔틀 버스 등등)하는 것은 비효율적이다. 차이점 출발지-도착지 사이 정류장 입석 시내버스 (City Bus) 수많은 정류장 입석 가능 광역버스 (Wide Bus) 몇 개의 정류장 입석 불가능 고속버스 (Express Bus) 정류장 없음 입석 불가능 상속 O - Bus 클래스..