목차 이전 글에서 자바에서의 전략패턴 구현에 대해 알아본 적이 있다. [Java]전략패턴 [Java]전략패턴 목차 Strategy Pattern 전략 패턴은 정책 패턴(Policy Pattern)이라 불리기도 하며, 소프트웨어의 실행 중 상황에 맞는 알고리즘을 선택해 실행할 수 있도록 하는 객체 지향 디자인 패턴이다. 예를 들자면 gnidinger.tistory.com 그 이후로 이런저런 구현을 하다가, 파이썬을 이용해 개발을 해야 할 일이 생겼는데, 아예 처음부터 전략패턴을 적용해서 구조를 설계하면 좋을 것 같다는 생각이 들어서 공부하게 되었다. 이 글에서는 위의 글과 마찬가지로 정렬 로직을 이용해 전략패턴을 구현하는 법을 살펴본다. 각 구현에 대한 세부사항은 아래 글에 적혀있다: [Java+Pytho..
목차 Abstract Class 자바에는 abstract라는 제어자가 있다. 이는 직역하면 '추상적'이라는 뜻인데, 이 맥락에서는 '미완성'이라고 받아들여도 크게 틀리지 않는다. 해당 제어자는 주로 클래스와 메서드를 정의할 때 사용되는데, 이를 각각 추상 클래스와 추상 메서드라 부른다. 계속해서 추상 메서드는 미완성이라는 이름대로 시그니처만 있고 바디가 없으며, 추상 메서드를 하나 이상 포함하면 추상 클래스가 된다. 또한 추상 클래스 역시 미완성이기 때문에 이를 기반으로 객체를 생성할 수가 없으므로 상속과 오버라이딩을 통해 메서드를 완성시켜 사용해야 한다. 이는 보통 클래스보다 추상화의 정도가 높으며 OOP의 추상화를 달성하는데 도움을 준다. Interface 인터페이스는 추상 클래스에서 한 걸음 더 높..
지난 글에 이어서 조금 더 긴 코드로 인터페이스의 장점에 대해 알아보자. 상황은 다음과 같다. 카페를 운영하는 사람이 있다. 단골은 매일 같은 음료만 먹는다 단골손님 A는 아이스 아메리카노를 먹는다. 단골손님 B는 딸기라떼를 먹는다. 위와 같은 내용을 코드로 옮겨보면 다음과 같을 것이다. class CafeCustomer { public String CafeCustomerName; public void setCafeCustomerName(String CafeCustomerName) { this.CafeCustomerName = CafeCustomerName; } } class CafeCustomerA extends CafeCustomer { } class CafeCustomerB extends CafeC..
final 키워드 영어로 '최종의', '마지막의'라는 뜻을 지니고 있는 final 키워드는 필드, 메서드, 클래스 앞에 위치할 수 있으며 각각 위치에 따라 의미가 조금씩 다르다. 조금씩 다른 의미를 지녔지만 공통적으로 변경이 불가능하고 확장할 수 없다는 특징을 가지고 있음을 알 수 있다. 이를 코드로 간략히 표현해보면 다음과 같다. final class FinalEx { // 확장/상속 불가능한 클래스 final int x = 1; // 변경되지 않는 상수 final void getNum() { // 오버라이딩 불가한 메서드 final int localVar = x; // 상수 return x; } } 정리하면 final 제어자가 앞에 붙으면 해당 대상은 더 이상 변경이나 확장이 불가능한 성질을 지니게 ..
- Total
- Today
- Yesterday
- RX100M5
- 남미
- 중남미
- 여행
- 알고리즘
- spring
- 면접 준비
- 백준
- 리스트
- Python
- 파이썬
- a6000
- 세계여행
- 야경
- 자바
- 기술면접
- 스트림
- 칼이사
- BOJ
- 유럽여행
- java
- 유럽
- Backjoon
- 지지
- 스프링
- Algorithm
- 세모
- 맛집
- 세계일주
- 동적계획법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |