본문 바로가기

반응형

객체지향

(5)
[객체 지향] 상속보단 조립 상속을 통한 기능 재사용 시 다음과 같은 문제가 발생할 수 있다. 상위 클래스 변경이 어렵다. 클래스가 증가한다. 상속을 오용할 수 있다. 상위 클래스의 변경이 어렵다. 상속 관계에서 상위 클래스가 변경되면 상위 클래스를 상속한 하위 클래스들에 영향을 미친다. 상위 클래스 입장에서 앞으로 어떤 하위 클래스가 추가될지 알 수 없기 때문에 하위 클래스가 많아질수록 상위 클래스의 변경이 어려워진다. 또한 상위 클래스가 어떻게 동작하는지 잘 숙지하고 있어야 하위 클래스가 기능을 재사용할 수 있는데, 이는 상위 클래스는 하위 클래스에 대한 캡슐화(기능을 드러내고 구현을 감춤)가 약해진다고 할 수 있다. 클래스가 증가한다. 프로젝트 규모가 커지고 기능이 추가될 수 있다. 이런 변화에 따라 새로운 기능 추가/구현을 ..
[객체 지향] 다형성과 추상화 다형성(Polymorphism) 여러(poly) 모습(morph)을 가지는 것. 객체 지향에서는 여러 동작을 수행하는 단일 객체를 의미한다. 일반적으로 부모 객체를 자식 객체가 상속하는 방식으로 다형성을 구현하는데, 동일한 이름의 부모 객체 메서드를 자식 객체 특성에 따라 같은 이름이지만 다른 동작 방식으로 구현할 수 있다. public class Timer { public void start() { ... } public void stop() { ... } } public interface Recharegeable { void charge(); } public class IotTimer extends Timer implements Rechargeable { public void charge() { ....
[객체 지향] 캡슐화 연습 연습1 아래 코드는 id와 pwd값을 통해 계정의 유효성을 판단하는 코드이다. public AuthResult authenticate(String id, String pwd) { Member member = findOne(id); if(member == null) return AuthResult.NO_MATCH; if(member.getVefiricationEmailStatus() != 2) { return AuthResult.NO_EMAIL_VERIFIED; } if(passwordEncoder.isPasswordValid(member.getPassword(), pwd, member.getId())) { return AuthResult.SUCCESS; } return AuthResult.NO_MATCH..
[객체 지향] 캡슐화(Encapsulation) 캡슐화는 다음과 같다. 데이터와 관련 기능(메서드)을 하나로 묶는다. 객체가 어떻게 기능을 구현했는가를 외부에 감춘다.(구현 상세 내용 감춤) 이를 통해 외부 영향 없이 객체 내부 구현 변경 가능 캡슐화를 하지 않으면 코드 작성 이후 추가적인 요구사항에 의한 데이터 구조/사용 변경에 유연하게 대처하기 어렵다. 예를 들어 날짜 표현 방식을 Date에서 LocalDateTime으로 변경하려면 기존 Date 클래스 메소드를 사용하는 모든 코드를 LocalDateTime 메소드 형식으로 교체해야 하기 때문에(연쇄적으로 변경이 전파된다) 프로젝트 규모가 클수록 부담스러운 일이 된다. 이런 문제 때문에 객체 지향에서는 데이터 접근을 객체에 속한 메서드를 통해서만 할 수 있도록 한다. 캡슐화를 통해 기능을 제공하고 ..
절차지향과 객체지향 절차 지향 절차 지향은 하나의 큰 프로그램을 여러 개의 작은 프로시저(procedure_절차)들로 나누는 것을 목표로 한다. 프로시저는 서브 프로그램(subprogram), 서브루틴(subroutine), 메서드(method), 함수(function)등의 여러 이름이 있다. 절차 지향에서 프로그램 코드는 함수(function)라 불리는 프로시저들의 집합으로 구성되어 있다. 이 함수들은 변수(variable)라 불리는 데이터에 의해 동작한다. 절차지향 프로그래밍은 구조적 프로그래밍(structured programming)에서 유래되었다. 구조적 프로그래밍은 명령형 프로그래밍에서 파생된 개념이다. 절차지향 프로그래밍의 기본 개념 절차 지향 또는 절차적 프로그래밍이라고 부른다. 앞서 언급 했듯이 절차지향 프..

반응형