다형성
12. 다형성 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속은 타입 계층을 구조화하기 위해 사용 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공 최근의 언어들은 상속 이외에도 다형성을 구현할 수 있는 다양한 방법들을 제공하고 있기 때문에 과거에 비해 상속의...
12. 다형성 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속은 타입 계층을 구조화하기 위해 사용 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공 최근의 언어들은 상속 이외에도 다형성을 구현할 수 있는 다양한 방법들을 제공하고 있기 때문에 과거에 비해 상속의...
11. 합성과 유연한 설계 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하는 데 비해 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 상속에서 부모 클래스와 자식 클래스 사이의 의존성은 컴파일타임에 해결되지만 합성에서 두 객체 사이의 의존성은 런타임에 해결된다. 상속 관계는 is...
10. 상속과 코드 재사용 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 것 전통적인 패러다임에서 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것 객체지향에서는 코드를 재사용하기 위해 ‘새로운’ 코드를 추가 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 구현 ...
9. 유연한 설계 9.1 개방-폐쇄 원칙 개방-폐쇄 원칙(Open-Closed Principle, OCP): 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 확장에 대해 열려 있다: 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 ‘동작’을 추구해서 애플리케이션의 ...
7. 캐시 웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치 캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여준다. 캐시는 네트워크 병목을 줄여준다. 캐시는 원 서버에 대한 요청을 줄여준다. 페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시는 거리로 인한 지연을 줄여준다. 7...
8. 의존성 관리하기 8.1 의존성 이해하기 변경과 의존성 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가짐 실행 시점: 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 함 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경됨 어떤 객체가 예정된 작업을 정상적으로 수...
6. 프락시 웹 프락시 서버는 중개자 프락시는 클라이언트와 서버 사이에 위치하여 그들 사이의 HTTP 메시지를 정리하는 중개인 6.1 웹 중개자 웹 프락시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인 HTTP 프락시 서버는 웹 서버이기도 하고 웹 클라이언트이기도 함 프락시는 HTTP 클라이언트의 요청을 받게 되므로, 반드시 웹 서...
5. 웹 서버 5.1 다채로운 웹 서버 웹 서버는 HTTP 요청을 처리하고 응답을 제공 웹 서버는 기능, 형태, 크기가 다양 기능은 달라도, 모든 웹 서버는 리소스에 대한 HTTP 요청을 받아서 콘텐츠를 클라이언트에게 돌려줌 5.1.1 웹 서버 구현 웹 서버는 HTTP 및 그와 관련된 TCP 처리를 구현한 것 웹 서버는 자신이 제공하는 리...
4. 커넥션 관리 4.1 TCP 커넥션 전 세계 모든 HTTP 통신은 TCP/IP를 통해 이루어진다 4.1.1 신뢰할 수 있는 데이터 전송 통로인 TCP TCP 커넥션의 한쪽에 있는 바이트들은 반대쪽으로 순서에 맞게 정확히 전달 4.1.2 TCP 스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송 TCP는 IP패킷이라고 불리는 작은 조각을 ...
7. 객체 분해 7.1 프로시저 추상화와 데이터 추상화 현대적인 프로그래밍 언어를 특정 짓는 중요한 두 가지 추상화 매커니즘은 프로시저 추상화와 데이터 추상화 프로시저 추상화는 소프트웨어가 무엇을 해야하는지를 추상화 데이터 추상화는 소프트웨어가 무엇을 알아야 하는지를 추상화 소프트웨어는 데이터를 이용해 정보를 표현하고 프로시저를 이용해 데이터...