본문 바로가기
개발/개발일기

데일리 과제 230221

by 전재경 2023. 2. 21.

Q1.객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요

 

A1.

객체 지향 프로그래밍 [Object-Oriented Programming(OOP) ]

문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론

OOP의 장점

  • 코드 재사용성 증가
    상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있다.
  • 생산성 향상
    잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.
  • 자연적인 모델링
    우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
  • 유지보수의 우수성
    프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할 수 있다.

 

OOP의 단점

  • 개발속도가 느린점
    객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.
  • 실행속도가 느린점
    객체지향언어는 대체적으로 실행속도가 느리다.
  • 코딩 난이도 상승
    다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.

추상화 - 객체의 속성과 기능을 추출하는 것, 객체들을 프로그램으로 만들기 위해 공통 특성을 파악하고 필요없는 특성을 제거하는 과정


캡슐화 - 데이터를 보호하고 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법


상속 - 상위클래스에 기능을 하위클래스가 가져와 사용하게되는 것으로 상속관계를 맺으면 하위 클래스를 생성할 때 상위 클래스의 속성들을 자동으로 물려받기 때문에 자식 클래스에서 또 정의할 필요가 없어 코드의 중복을 없앨수 있다.


다형성 - 상속과 연관있는 개념으로 상속을 받은 객체가 상속으로 받은 기능을 오버라이딩 또는 오버로딩을 통해 기능을 확장하거나 재구성하여 코드의 재사용성과 유지보수가 용이하도록 도와주는 개념

 

5원칙 (SOLID 원칙)

 

단일 책임 원칙(Single Responsibility Principle)


모든 클래스는 각각 하나의 책임만 가져야 한다. 즉, 특수한 목적을 수행하도록 만든 클래스는 해당 목적 외에 다른 기능을 수행하면 안된다.


개방-폐쇄 원칙(Open Closed Principle)


클래스는 확장에는 열려있고 수정에는 닫혀있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.


리스코프 치환 원칙(Liskov Substitution Principle)


자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 즉, 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야한다.


인터페이스 분리 원칙(Interface Segregation Principle)


한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.


의존 관계 역전 원칙(Dependency Inversion Principle)


의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. 즉, 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.


Q2. REST API란 무엇인가요? (모두가 답변) 프로젝트에 REST API를 사용한 이유가 무엇인가요?

(프로젝트에 REST API를 사용하셨을 경우에만 추가 답변), REST API 말고 다른 비교할만한 것을 알고 있나요?

 

A2.

REST API

끊어서 보면 REST는 REpresentational State Transfer로

자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미

어떤 자원에 대해 CRUD연산을 수행하기 위해 URI로 Method를 사용하여 요청을 보내며,

요청을 위한 자원은 특정한 형태로 표현

즉 REST API는 그런 REST원리를 따르는 API 이다.

 

REST의 특징

 

1. Server-Client(서버-클라이언트 구조)

  • 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다.

2. Stateless (무상태)

  • HTTP 프로토콜은 Stateless Protocol이므로 REST역시 무상태성을 갖는다.

3. Cacheable (캐리 처리 기능)

  • 웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.

4.Layered System (계층 구조)

  • Client는 REST API Server만 호출

5. Uniform Interface (인터페이스 일관성)

  • URI로 지정한 Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미

6. Self-Descriptiveness (자체 표현)

  • 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있습니다.

REST API의 특징


REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 것 입니다.

 

URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것

'개발 > 개발일기' 카테고리의 다른 글

[Unreal Engine]230415 언리얼 엔진 첫시작  (0) 2023.04.15
230114 TIL  (0) 2023.01.14
230108 실전프로젝트 1주차 WIL  (0) 2023.01.08
20230101 WIL 클론프로젝트 회고  (1) 2023.01.01
항해99 미니프로젝트 WIL  (0) 2022.12.25

댓글