5/4

justyoon·2023년 5월 4일
0

문제

개별적으로 객체 지향 점검을 체크 해봤지만 확실한 개념을 몰라서 자신있게 체크하기가 어려웠다

  • 객체의 상태는 어떤 것으로 표현되는가?
  • 캡슐화의 주요 목적은 무엇인가?
  • 캡슐화는 어떤 방식으로 데이터를 보호하는가?
  • 캡슐화를 구현하는 방법 등등
    다시 한번 찾아봄


시도

📌내용 추가 필요📌


해결

📌내용 추가 필요📌


알게된

5/1 Object-Oriented Programming

객체지향 일반

  1. 객체지향 프로그래밍의 기본 구성 요소는 무엇인가요? (b)
    a) 변수, 함수, 연산자
    b) 객체, 클래스, 메소드
    c) 포인터, 배열, 구조체
    d) 프로토콜, 델리게이트, 뷰

  2. 객체지향 프로그래밍의 핵심 개념이 아닌 것은? (d)
    a) 캡슐화
    b) 상속
    c) 다형성
    d) 메모리 관리

  3. 객체의 상태는 어떤 것으로 표현되나요? (b)
    a) 메소드
    b) 속성
    c) 인터페이스
    d) 클래스

  4. 객체지향 프로그래밍에서 메소드는 무엇을 의미하는가? (b)
    a) 클래스의 데이터
    b) 클래스의 행위
    c) 클래스의 상태
    d) 클래스의 인터페이스

  5. 객체를 생성하는 과정을 무엇이라고 부르나요? (b)
    a) 초기화
    b) 인스턴스화
    c) 구현
    d) 정의


캡슐화

  1. 캡슐화의 주요 목적은 무엇인가요? (c)
    a) 코드의 재사용성
    b) 코드의 유지보수성
    c) 데이터 보호
    d) 코드의 확장성
class Rectangle:
    def __init__(self, width, height):
        self._width = width
        self._height = height

    [2번 문제]
    def width(self):
        return self._width

    [3번 문제]
    def width(self, value):
        if value <= 0:
            raise ValueError("Width must be positive")
        else:
            self._width = value
  1. 위 코드에서 2번 문제에 들어가야할 알맞은 내용은? (a)
    a) @property
    b) @getter
    c) @setter
    d) @width.setter

  2. 위 코드에서 3번 문제에 들어가야할 알맞은 내용은? (d)
    a) @property
    b) @getter
    c) @setter
    d) @width.setter

  3. 캡슐화는 어떤 방식으로 데이터를 보호하는가? (a)
    a) 데이터를 클래스 외부로부터 숨김
    b) 데이터를 암호화
    c) 데이터를 상속에 의해 보호
    d) 데이터를 메소드로만 전달

  4. 캡슐화를 구현하는 방법 중 하나는 무엇인가요? (c)
    a) 메소드 오버라이딩
    b) 인터페이스 구현
    c) getter와 setter 메소드 사용
    d) 다중 상속


상속

  1. 상속의 주된 목적은 무엇인가요? (b)
    a) 데이터 보호
    b) 코드 재사용성
    c) 유지 보수성
    d) 확장성

  2. 다음 중 상속의 장점이 아닌 것은? (b)
    a) 코드의 재사용성
    b) 캡슐화
    c) 유지 보수성 향상
    d) 모듈화

  3. 다중 상속이란 무엇인가요? (a)
    a) 하나의 클래스가 여러 개의 클래스를 상속받는 것
    b) 여러 개의 클래스가 하나의 클래스를 상속받는 것
    c) 하나의 클래스가 여러 개의 인터페이스를 구현하는 것
    d) 여러 개의 클래스가 하나의 인터페이스를 구현하는 것


다형성

Q
다형성(Polymorphism)이란 객체지향 프로그래밍에서 어떤 개념을 나타내는지 간략하게 설명하시오.

A
다형성은 객체지향 프로그래밍에서 하나의 인터페이스나 클래스가 다양한 형태의 객체로 구현될 수 있는 개념을 말한다. 이를 통해 코드의 유연성과 확장성을 높이며, 쉽게 재사용할 수 있다.

Q
메소드 오버라이딩(Method Overriding)이란 무엇이며, 이를 통해 어떤 이점을 얻을 수 있는지 설명하시오.

A
메소드 오버라이딩은 하위 클래스에서 상위 클래스의 메소드를 재정의하는 것을 말한다. 이를 통해 상속받은 클래스가 상위 클래스의 메소드를 덮어쓰거나 확장하여 다형성을 구현할 수 있다. 이로 인해 코드의 유연성과 재사용성이 증가한다.

Q
객체지향 프로그래밍에서 다형성을 구현하는 두 가지 방법 중 하나인 메소드 오버로딩(Method Overloading)이란 무엇인지 설명하시오.

A
메소드 오버로딩은 클래스 내에서 같은 이름의 메소드를 여러 개 정의하되, 매개변수의 타입이나 개수를 다르게하여 다양한 인자를 받아 처리할 수 있는 것을 말한다. 이를 통해 메소드 이름을 일관되게 유지하면서 다양한 입력을 처리할 수 있어 코드의 가독성과 재사용성이 향상된다.


permission class

  • view에 접근 할 수 있는 요청을 drfpermission_classes를 활용해 관리 할 수 있나요?
    • permissions.AllowAny : 모든 사용자를 대상으로 접근 허용
    • permissions.IsAuthenticated : 로그인 된 사용자를 대상으로 접근 허용
    • permissions.IsAdminUser : admin 사용자를 대상으로 접근 허용
    • 이외에도 다양한 permission class들이 존재

Q: if not user.is_authenticated:if user and not user.is_authenticated:는 어떤 차이?

A: user = None 인 경우도 반영하기 위해 user까지 포함해 주었다.

참고자료

profile
with gratitude, optimism is sustainable

0개의 댓글