데이터 / 로직 -> 패러다임 (틀) => 시작
객체지향 패러다임 시작 => 객체
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해 주고, 결정하는 역할을 한다. 예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태값을 지니지 않는 함수값들의 연속으로 생각할 수 있게 해준다.
(인스턴스는 클래스를 쓰는 언어에서만 사용됨)
프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스(class-less), 프로토타입 지향(prototype-oriented) 혹은 인스턴스 기반(instance-based) 프로그래밍이라고도 한다.
클래스 기반 => 실제 => 인스턴스
- 명사와 행위 위주의 용어 선택
- 클래스 위주 프로그래밍에서 제일 중요한 것은 뚜렷한 목표설정
ex. 음식점 찾기 프로그램 -> 메뉴, 가게이름, 위치 등이 명사
식당이라는 데이터 위주의 클래스 => 위의 명사들이 식당 클래스의 멤버변수가 되는 것
- 구조체 (여러 개의 데이터가 흩어지는 것이 싫을 때 사용)
- 구분 위한 식별자 -> Data에서 Primary key같은 역할
- 멤버변수는 구조
- 생성자는 해당 클래스에 필수적으로 필요한 데이터
- 기능별로 묶기 -> 상태위주
- 기능을 정의한 클래스 => 메서드부터 설계
- 역할에 따라서 구분 (3 tier - 3계층 구조)
세 층이란 사용자 인터페이스, 비즈니스 로직, 데이터베이스를 말하며, 이들을 각각 독립된 모듈로 개발하고 유지하는 구조로, 일반적으로 이들은 각각 다른 플랫폼 상에서 구동된다.
프레젠테이션 계층
프레젠테이션 계층은 응용 프로그램의 최상위에 위치하고 있는데 이는 서로 다른 층에 있는 데이터 등과 커뮤니케이션을 한다.
애플리케이션 계층
이 계층은 비즈니스 로직 계층 또는 트랜잭션 계층이라고도 하는데, 비즈니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 그것은 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.
데이터계층
데이터 계층은 데이터베이스와 그것에 액세스해서 읽거나 쓰는 것을 관리하는 프로그램을 포함한다. 애플리케이션의 조직은 이것보다 더욱 복잡해질 수 있지만, 3계층 관점은 대규모 프로그램에서 일부분에 관해 생각하기에 편리한 방법이다.
출처 : 위키백과 - 다층_구조
| S | SRP | 단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 한다.
| O | OCP | 개방-폐쇄 원칙 (Open/closed principle) : “소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”
| L | LSP | 리스코프 치환 원칙 : “프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.”
| I | ISP | 인터페이스 분리 원칙 : “특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.”
| D | DIP | 의존관계 역전 원칙 : 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.”출처 : 위키백과 - SOLID