50일 포트폴리오 챌린지 2일차
객체 지향
객체 지향 4가지 특징
- 추상화
- 다형성
- 캡슐화
- 상속
객체 지향의 5가지 설계 원칙(SOLID)
- SRP: Single Responsibility Principle (단일 책임의 원칙)
- OCP: Open/Closed Principle (개방 폐쇄의 원칙)
- LSP: Liskov’s Substitution Principle (리스코프 치환의 원칙)
- ISP: Interface Segregation Principle (인터페이스 분리의 원칙)
- DIP: Dependency Inversion Principle (의존성 역전의 원칙)
객체 지향 설계 방법
- 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
- 객체들 간의 관계를 고민
- 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
- 협력을 설계
- 객체들을 포괄하는 타입에 적절한 책임을 할당
- 구현하기
웹 애플리케이션
HTTP
- 서버와 클라이언트가 웹에서 데이터를 주고받기 위한 프로토콜(규약)
- HTTP/1.1, HTTP/2는 TCP 기반 위에서 동작
- HTTP/3는 UDP 기반 위에서 동작
HTTP 요청/응답 메시지 구조
HTTP 특징
- 클라이언트-서버 모델
- 서버가 클라이언트 상태를 유지하지 않음
- 해결책: Keep_Alive 속성 사용무상태 프로토콜(Stateless)
- 비 연결성(Connectionless)
- 서버가 클라이언트 요청에 대해 응답을 마치면 맺었던 연결을 끊어 버림
- 해결책: 쿠키(클라이언트에 정보 저장), 세션(서버에 정보 저장), JWT
HTTP 요청 메소드
- GET, POST, PUT, DELETE 등
HTTP 응답 코드
- 2xx(성공), 3xx(리다이렉션), 4xx(클라이언트에러), 5xx(서버 에러) 등
HTTP 헤더
- Content-Type, Accept, Cookie, Set-Cookie, Authorization 등
계산기 웹 프로그램 구현하기
프로젝트 생성 후 의존성 추가
testImplementation 'org.assertj:assertj-core:3.24.2'
implementation 'ch.qos.logback:logback-classic:1.4.8'
객체와 객체를 비교할 때는 equlas()와 hashCode() 메소드필요
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RequestLine that = (RequestLine) o;
return Objects.equals(method, that.method) && Objects.equals(urlPath, that.urlPath) && Objects.equals(queryString, that.queryString);
}
@Override
public int hashCode() {
return Objects.hash(method, urlPath, queryString);
}
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 강의' 카테고리의 다른 글
[6일차] 50일 포트폴리오 챌린지 (0) | 2023.08.13 |
---|---|
[5일차] 50일 포트폴리오 챌린지 (0) | 2023.08.12 |
[4일차] 50일 포트폴리오 챌린지 (0) | 2023.08.11 |
[3일차] 50일 포트폴리오 챌린지 (0) | 2023.08.10 |
[1일차] Part 1. 개발 환경 구성하기 (0) | 2023.08.08 |