본문 바로가기

상속

(4)
자바에서 구성이란? 구성이란 클래스의 특정 기능을 수행하기 위해 다른 '객체 패밀리'의 유사하거나 같은 역할을 하는 메소드를 사용하기 위해 클래스들끼리 대등한 관계로 결합된 구조이다. 이렇게 객체를 구성하면, 기존 코드를 고치는 대신 새로운 '객체 그룹군'을 만들거나 이미 만들어진 '객체 그룹군의 자식 클래스'를 변경하여 기능의 추가, 수정을 자유롭게 제어할 수 있다. 그래서 기존 코드를 건들었을 때 발생하는 생각하지 못한 버그(=부작용)가 연쇄 작용하는 것을 막을 수 있다. 기존 코드의 수정이 아닌 확장으로, 기존 프로그램 구성을 안전하게 지키면서 어플리케이션을 개선할 수 있다. 마치 상속이 한 번 정한 정책은 수정하기 힘들고 위에서 명령한 것은 억지로 따라야 하는 경직된 관료조직과 같다면, 구성은 급변하는 시장 환경에 ..
추상화, 캡슐화, 다형성 디자인 패턴 책을 보다가 객체지향 기본 개념인 추상화, 캡슐화, 다형성이 가물가물 하여서 다시 찾아본 내용을 정리함. 객체지향개발(Object Oriented Programming)의 특성은 크게 추상화, 캡슐화, 상속성, 다형성이 있다. 1) 추상화(Abstraciton)- 공통의 속성이나 기능을 묶어 이름을 붙이는 것- 객체 지향적 관점에서 클래스를 정의하는 것을 바로 추상화라고 정의 내릴 수 있겠다.- 좀 더 살펴보면 물고기, 사자, 토끼, 뱀이 있을 때 우리는 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때, 만약 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다. 2) 캡슐화(Encapsulation)- 데이터 ..
추상 클래스 뽀개기 추상 클래스는 이전 포스팅에서도 다룬 적이 있지만, 다시 정리된 내용이 있어 새로 올린다.먼저 추상 클래스의 특징을 살펴보면 다음과 같다. 이렇게 글로 된 설명만 보고 추상 클래스를 이해 하였다면, 당신은 현업 개발자이거나 프로그래밍 감이 정말 좋은 축에 속하는 사람일 것이다. 필자를 포함한 초보들은 이런 설명만 보고는 도무지 이해를 못한다. 동의하였다면 아래 그림을 살펴보자. 1. 추상 클래스 추상 클래스는 미완성 클래스이다. 객체가 가지는 특성을 추상화 했으나 구현하지 못한 것이다. 2. 자식 클래스 자식 클래스에 공통으로 포함된 move 메서드와 carry 메서드에서 볼 수 있듯이, 추상 메서드는 반드시 자식 클래스에서 오버라이딩하여 구현하여야 한다. 그렇지 않으면 자식도 추상 클래스가 된다. 3...
객체지향 프로그래밍의 특징 - 은닉화, 상속 그리고 다형성 1. 은닉화 멤버 필드(데이터)를 안전하게 보관하려고 접근 제한자 private을 사용하며, 메서드는 public을 사용하여 멤버 필드를 보호하는 것을 은닉화(encapsulation)이라고 한다. 2. 다형성객체지향 개념에서의 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현한다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것 입니다. 다음 예제에서는 이러한 다형성을 세가지로 나누고 있다.ⓐ 레퍼런스 다형성 - 부모(Ball)의 타입으로 자식(BaseBall)의 객체를 생성하는 것ⓑ 아규먼트 다형성 - 부모의 이름..