Post

[Tech] 객체 지향 프로그래밍, 프로세스&스레드

[Tech] 객체 지향 프로그래밍, 프로세스&스레드

면접cs

객체 지향 프로그래밍이란?!

  • Object Oriented Programming라 불리는 객체 지향 프로그래밍.
  • 협력의 관점, 즉 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것을 의미하고.
  • 각각의 객체는 서로 메시지를 주고 받고 데이터를 처리할 수 있도록,
    상호작용으로 로직을 구성하는 프로그래밍 방법이다.

객체 지향 프로그래밍의 장단점

장점

  • 프로그램을 유연하고 변경이 용이하게 만듦.
  • 대규모 소프트웨어 개발에 적합.

단점

  • 설계 시 많은 시간 소요 + 처리가 느림.
  • 객체가 많아질 수록, 용량이 커짐.

객체 지향 특징

  1. 추상화
    • 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미.
    • 예시와 같이, 자동차오토바이가 공통적으로하는 기능을 추출해서 차량을 정의한다.
      Image
  2. 캡슐화
    • 변수와 함수를 하나의 단위로 묶고, 외부에서의 접근을 보호하는 것을 의미.
    • 데이터의 무결성을 유지하고, 잘못된 접근을 방지.
    • 예시와 같이, #기호로 private 필드를 정의할 수 있다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      
        class 클래스명 {
            // 1. 비공개 필드 선언
            #필드이름 = 초기값;
      
            // 2. 생성자 (선택)
            constructor(초기값) {
              this.#필드이름 = 초기값;
            }
      
            // 3. Getter (읽기 접근 허용)
            get 필드이름() {
              return this.#필드이름;
            }
      
            // 4. Setter (쓰기 접근 허용 + 유효성 검사)
             set 필드이름(새값) {  
                if (/* 유효성 조건 */) {
                    throw new Error("유효하지 않은 값입니다.");
                }
                this.#필드이름 = 새값;
            }
        }
      
        const 인스턴스명 = new 클래스명("매개변수값...");
        console.log(인스턴스명.필드이름); // getter 호출
        인스턴스명.필드이름 = "새로운값"; // setter 호출  
      
  3. 상속
    • 상위 클래스의 속성과 연산을 물려받아 사용하는 것을 의미.
    • 기존의 클래스 기능을 확장하거나 재사용 가능.
    • 예시와 같이, 자동차오토바이차량의 기능을 상속받아 재사용하고 확장한다.
      Image
  4. 다형성
    • 객체의 속성이나 기능이 상황에 따라 다양한 역할을 수행할 있는 것을 의미.
    • 예시와 같이, 자동차라는 틀이 있어 다양한 모델의 차를 구성할 수 있다.
      Image



프로세스스레드의 차이는?!

Image

프로세스

  • 운영체제에서 할당하는 작업의 단위를 의미.
  • 프로세스 간의 자원 공유는 없다.

스레드

  • 프로세스 내에서 실행되는 작업의 단위를 의미.
  • 부모 프로세스의 자원을 공유한다.

다음과 같이, 스레드부모 프로세스code, data, heap 영역을 공유한다.
이 때, stack 영역만 따로 할당 받는다.
Image



✨ 출처

프론트엔드 기술 면접 질문
blog, 객체지향 프로그래밍 특징


This post is licensed under CC BY 4.0 by the author.