이러한 정리가 이루어진 책 한 권이 있다. 이 책을 조금씩 정리하고,
조금 더 나의 언어로 정리해 기록하고 쌓아가며 나를 성장시키고, 다른 개발자들에게 도움이 될 수 있기를 바라는 마음에서 해당 북스터디를 스스로 진행하기로 했다.
더 좋은 개발자가 될 수 있고 더 나은 개발자가 되고 싶은 분들 중 길을 잘 못 찾고 있는 분들이 계시다면 위의 4가지를 다루고 있는 이 책이 큰 도움이 될 수 있을 것이라 생각한다.
이 책의 챕터 6부터 시작해서 책들을 학습하고 어떻게 책을 재구성할지를 고민하고 블로그에 게시할 예정이다. 매일 2시간 이상씩 학습하고, 이 책은 면접을 준비하는 책이기 때문에
단순한 학습 뿐만 아니라, 읽으면서 스스로 발전해 갈 수 있으면 좋겠다.
그리고 자신의 언어로 바꾸는 게 필요하다.
가령, github에 나와 있는 오버라이딩, 오버로딩에 관한 정리는 아래와 같다.
오버라이딩과 오버로딩은 자주 나오면서도 중요한 개념이다. 하지만, 그만큼 잘 까먹기 때문에 정리하고 넘어가려 한다.
구분 | 오버로딩 | 오버라이딩 |
---|---|---|
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
반환 타입 | 상관 없음 | 동일 |
(출처 : Ready-For-Tech-Interview)
좋은 정리라고 생각한다.
하지만
소개하고자 하는 책에서는 오버라이딩과 오버로딩에 관해 위 보다 더욱 상세하게 기술한다.
또한 대화형식으로 기술할 수 있게 한다. 또한 차이를 구분할 수 있게 한다.
필수개념.
실제 답변은 아래와 같은 틀로
다형성은 객체지향 프로그래밍의 핵심 개념 중 하나입니다.
다형성을 뜻하는 ‘polymor-phism’은 ‘많다’를 의미하는 ‘poly’와 ‘형태’를 의미하는 ‘morph’라는 2개의 그리스어로 구성된 단어입니다. 즉 다형성은 많은 형태를 의미합니다.
좀 더 정확하게 말해, 객체지향 프로그래밍에서 다형성은 객체가 때에 따라 다르게 동작
할 수 있게 해주거나 어떤 동작이 다른 방법으로 동작할 수 있도록 하는 역할을 합니다. 다형성을 구현하는 방법 중 하나는 메서드 오버로딩
입니다. 여러 개의 메서드가 동일한 이름을 가지고 있지만 매개변수가 다른 경ㅇ우 컴파일러가 오버로드된 메서드 가운데 어떤 형식을 호출할 것인지 컴파일 시간에 식별할 수 있으므로 컴파일 타임 다형성이라고도 합니다.
이때 오버로드된 메서드의 형태에 따라 객체는 다르게 동작합니다. 예를 들어 Triangle(삼각형)이라는 클래스에는 서로 다른 매개벼수를 가진 여러 개의 draw 메서드를 정의할 수 있습니다. 다형성을 구현하는 또 다른 방법은 메서드 오버라이딩입니다. 메서드 오버라이등은 IS-A 관계가 잇을 때 일반적으로 사용하는 방법이며, 런타임 다형성 또는 동적 메서드 디스패치
라고 합니다. 보통 여러 가지 메서드를 포함하는 인터페이스 구현으로 시작하며, 각 클래스는 특화된 동작을 수행하기 위해 인터페이스에 있는 메서드를 오버라이드 합니다. 이때 다형성이 타입에 대한 혼란 없이 이 클래스들을 부모 인터페이스와 똑같이 사용할 수 있게 합니다. 런타임에 자바가 이러한 클래스를 구별할 수 있고 어느 클래스가 사용되는지 알고 잇기 때문에 가능한 일입니다. 예를 들어 draw 메서드를 가지는 Shape(모양 이라는 인터페이스가 있다고 할 때, Triabngle,Rectangle(직사각형),Circle(원) 클래스가 Shape 인터페이스 구현에 있는 draw 메서드를 오버라이드해서 각 도형에 해당하는 모양을 그릴 수 있습니다.
위 정도의 형태가 단순히 다형성을 통해 메서드 오버로딩, 오버라이딩을 설명할 수 있는 상태를 기술한 것으로 차이에 관해서는 더 상세하게 나중에 더 많은 것을 보며 이야기 해 보자.
지면을 통해 보여지지면, 말을 하는 것은 살이 붙고, 거기에는 지식과 적절한 예시가 필요하다.
우리가 기본서 또는 교수님, 강사님들이 자주 들던 예시들이 이제는 실력을 쌓은 우리의 머릿 속에서 우리의 입에서 나올 수 있게 숙련시키고 연습하는 방식이 담겨 있는 책이다.
이 책은 초보에게는 중급과 고급으로 나아갈 수 있는 좋은 토대가 되며
중급과 고급인 사람에게는 핵심을 잘 정리하고 복습하기 좋은 교본이라고 생각하기에 이 책은 앞으로도 계속 나와 함께 하며 성장할 수 있는 책이라고 생각한다.
여러 CS책을 보고, 면접 서적을 뒤적이며 이 책 한 권을 통해 나의 교본을 쌓고 더 많은 개념들을 축적하고 향상시킬 수 있게 해야겠다.
해당 서적에서도 GOF에 대해서는 별도의 서적을 활용할 것을 권할 만큼 그 내용이 방대하다. 집중과 선택을 한 것으로 보인다. 나는 해당 내용까지 섭렵해 더 좋은 개발자가 되도록 해야겠다.