#OOP

oop와 관련된 글.

Prototype, 그리고 Class cover image
#prototype

Prototype, 그리고 Class

Prototype JS에서 프로토타입이란, 객체의 특성을 다른 객체로 상속하는 것을 가능하게 하는 메커니즘이다. (엄밀히 말하자면 ‘상속’이라는 단어는 적절치 않을 수 있다. 그 이유는 밑에서 다시 다루어 보겠지만, 일단은 일관된 이해를 돕기 위해 …

instanceof의 사용을 지양하자 cover image
#java

instanceof의 사용을 지양하자

instanceof란? 우리는 종종 그림과 같이 부모를 상속해서 만들어진 자식 객체가 여러 타입인 경우에 특정 클래스가 맞는지 확인하기 위해 아래 코드와 같이 라는 메서드를 사용하곤 한다. 코드는 piece 객체가 Empty라는 클래스 타입인지 확…

다형성(Polymorphism)이란? cover image
#java

다형성(Polymorphism)이란?

객체 지향 패러다임의 4가지 주요 특성인 “캡슐화”, “추상화”, “다형성”, “상속”. 개발자라면 이미 각각에 대해 완벽히 알고 있는 사람도 많을 것이고, 객체 지향을 공부해 본 사람이라면 한번 쯤은 들어보았을 내용이다. 이번 글에서는 그 중 “다…

사용성을 고려해 객체를 설계하자 cover image
#oop

사용성을 고려해 객체를 설계하자

과도한 코드 분리에 대한 피드백 지하철 노선도를 만드는 미션을 수행하면서 다양한 리뷰를 받았다. 그 중에서 리뷰가 아니었다면 생각하지 못했을 부분을 소개해보고자 한다. 미션 요구사항 중 출발역에서 도착역으로 가는 경로를 구할 때 기준을 최단 거리, …

SOLID 1편 SRP와 OCP cover image
#oop

SOLID 1편 SRP와 OCP

이번 포스팅에서는 객체지향에서 대표적인 원칙이라고 할 수 있는 SOLID원칙에 대해서 알아보고자 한다. 하나의 포스팅에 모든 것을 작성하면 길어질 것 같아, 와 를 먼저 포스팅하고 2편에서 , , 를 설명할 것이다. 1 . SRP : 단일 책임 원…

else 예약어를 쓰지 않는다 cover image
#object-calisthenic

else 예약어를 쓰지 않는다

The ThoughtWorks Anthology의 더 나은 소프트웨어를 향한 9단계: 객체지향 생활 체조 중 규칙 2에 대한 내용이다. 시작은 프리코스부터 필자는 현재 우아한 테크코스(이하 우테코)를 진행하고 있는데 우테코를 들어오기 위한 과정 중 …

정적 메소드, 너 써도 될까? cover image
#static

정적 메소드, 너 써도 될까?

static이 붙은 녀석들은 JVM이 시작될 때 Method(static) 영역에 저장된다. 그리고 프로그램이 끝날 때까지 사라지지 않고 메모리에 남아있다. (자바 기준) 이번 글에서는 그중에서도 정적 메소드(static method)에 대해 이야기…

원시 타입을 포장해야 하는 이유 cover image
#oop

원시 타입을 포장해야 하는 이유

변수를 선언하는 방법에는 두 가지가 있다. 원시 타입의 변수를 선언하는 방법과, 원시 타입의 변수를 객체로 포장한 변수를 선언하는 방법이 있다. (Collection으로 선언한 변수도 포장한다. 이를 일급 컬렉션이라 하며 티거의 일급 컬렉션을 참고하…

상속보다는 조합(Composition)을 사용하자. cover image
#oop

상속보다는 조합(Composition)을 사용하자.

우리는 다양한 이유로 상속을 사용한다. 코드를 재사용함으로써 중복을 줄일 수 있다. 변화에 대한 유연성 및 확장성이 증가한다. 개발 시간이 단축된다. 하지만, 상속의 장점들은 상속을 적절히 사용했을 경우에만 해당한다. 상속을 잘못 사용하면 변화에 유…

getter를 사용하는 대신 객체에 메시지를 보내자 cover image
#object-calisthenic

getter를 사용하는 대신 객체에 메시지를 보내자

getter는 멤버변수의 값을 호출하는 메소드이고, setter는 멤버변수의 값을 변경시키는 메소드이다. 자바 빈 설계 규약에 따르면 자바 빈 클래스 설계 시, 클래스의 멤버변수의 접근제어자는 private이며, 모든 멤버변수에 대해 get메소드와…