관심쟁이 영호

[#1 코드로 이해하는 객체지향 설계] 객체, 설계 본문

학교공부/자바의 왕!

[#1 코드로 이해하는 객체지향 설계] 객체, 설계

관심쟁이 영호 2021. 9. 13. 21:15
반응형

대망의 첫 장이다.

 

아 시작하기 전에, 저자님이 핵심적으로 전해주는 말이 있다.

해당 책은 프로그래밍 패러다임의 "객체지향 패러다임"에 대해서 설명하는 책이다.

 

객체지향 패러다임은 계속해서 발전하고 변화하고 있다. 우리가 공부하는 "객체지향 패러다임"은 버스 노선 중 1개다.

우리는 현재의 정류소에서 "객체지향 패러다임" 버스를 탑승할 뿐이다. 탑승하여(책을 이해하여) 패러다임의 종점까지 함께 달려보자!

 


1장 객체, 설계

 

1장에서 저자님은 추상적인 이론에 대한 설명보단, 코드를 통해서 몸소 느껴봄을 강조한다.

코드를 통해 체지향 프로그램을 설계하고 유지 보수하는 데 필요한 원칙과 기법

알아보고 핵심적인 내용을 정리해보자!

 


  • 1장에서의 저자님이 말하고자하는 의견은,
"좋은 설계를 하여야 한다."

 

 

  • 그렇다면 좋은설계는 무엇일까?
"오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계"

 

  • 위에서 말하는 좋은설계는 어떻게 하는 걸까?
"객체지향 설계를 하도록 노력해야한다."

 

  • "객체지향 설계"는 어떻게 해야 하는 걸까?

책에서는 절차 지향의 예시 코드를 통해서 비유를 해주었다. 1장에서 나오는 "객체지향으로의 첫걸음"은 다음과 같다.

"캡슐화"를 이용하여 의존성을 제거하자.

 

  • 의존성이란 무엇일까?

말 그대로 하나의 객체가 다른 객체에 의존하고 있다는 것을 말한다. 의존성이 많이 존재하게 된다면 아주 작은 요구사항이 변경되었을 때, 체인 효과가 일어나 아주 거대한 유지보수가 필요할 수도 있다.

 

의존성을 최대한 제거하여 각 객체마다 독자적인 "책임"을 가지도록 하여야 한다.

 

  • 책임이란?
책임을 각 객체에게 나누어주는 것이 "객체지향 설계"의 핵심이다.

책임을 각 개체에게 나누어주면, 요구사항이 변경되어 유지보수가 필요할 때 해당 객체만 바꾸어주면 되는 효과가 있다.

 


2장 객체지향 프로그래밍

 

  • 2장에서의 저자님이 말하는 핵심은 다음과 같다.
"코드를 유연하게 하라."

 

  • 코드를 유연하게 한다는 것이 무슨 말일까?

"유연"을 책에서는 예시를 통해서 설명해주니, 보고 이해한 내 생각을 써본다.

"하나의 코드를 고정시키고 성격이 비슷한 객체들을 해당 코드 1개로만 운영하는 것"

쓰고 보니 좀 이상하다.. 다시 이야기하자면,

"자판기를 떠올려라. 자판기의 음료수 캔들은 같은 틀을 가지고 있지만 전부 다른 음료수이다. 자판기는 어떤 음료수가 올지 모르는 상태에서 틀만 정해두었을 뿐이다."라고 생각하자.

 

코드를 유연하게 하는 것 또한 비슷하다.

 

  • 코드를 어떻게 유연하게 할까?

저자가 추천하는 핵심적인 방법은 다음과 같다.

"상속과 인터페이스를 이용하라"

상속과 인터페이스의 다형성을 이용하는 방법이 대표적이다.

 

※ 아주아주 비슷한 게 "오버 로딩"이 있다. "오버 로딩"은 파라미터에 따라 다른 코드를 동작시킬 수 있다. 하나 다형성을 이용한 코드는 일괄처리되는 것이 특징(파라미터를 넘긴 다음 동작이 달라짐!!)이다.

 

  • 다형성이란 무엇인가?
"동일한 파라미터를 전송하지만 실제로 어떤 메서드가 실행될 것인지는
메세지를 수신하는 객체의 클래스가 무엇이냐에 따라 달라진다"

 


1~2장에서는 객체지향 프로그래밍을 구성하는 다양한 요소와 구현 기법을 살펴봤다.

 

클래스, 추상 클래스, 인터페이스를 조합해서 객체지향 프로그램을 구조화하는 기본적인 방법과 상속을 이용해 다형성을 구현하는 기법을 소개했다.

 

다음 시간에는 "역할, 책임, 협력"을 좀 더 상세히 알아보도록 하자!

 

 

 

 

300x250
Comments