Language/JavaScript

객체 지향 프로그래밍

언젠간코딩잘함 2023. 3. 14. 22:05
객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

 

 

 

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

 

-장점

  •  코드 재사용이 용이
    남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다.

  •  유지 보수가 쉬움
    절차 지향 프로그래밍은 코드를 수정할 때 일일이 찾아 수정해야하는 반면, 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.
     
  •  대형 프로젝트에 적합
    클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉽다.

 

 

-단점

  •  처리속도가 상대적으로 느리다.
  •  객체가 많으면 용량이 커질수 있다.
  •  설계시 많은 노력과 시간이 필요하다.

 

 


객체 지향 프로그래밍 키워드 4가지

 

추상화

  • 불필요한 부분을 숨긴다.
  • 인터페이스와 구현을 분리한다.

캡슐화

  •  데이터 캡슐화 : 필드와 메서드를 하나로 묶는 것
  •  은닉(hiding): 구현은 숨기고, 동작은 노출시킴
  •  느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

상속

  • 자식클래스가 부모클래스의 특징과 기능을 물려받는 것
  • 클래스를 상속 받아 수정하여 사용하기 때문에 중복 코드를 줄일 수 있다.
  • 부모클래스의 수정으로 모든 자식클래스들도 수정되는 효과
  • 클래스에 메소드 추가가 어려운 경우 사용
     
    • 자신이 아닌 남이 만든 클래스를 가져오는 경우 (수정 불가)
    • 클래스가 다양한 곳에서 상속 받아 쓰이는 경우 (메서드를 추가하면 다른 곳에서 불필요한 기능이 포함될 수 있음)

다형성

  • 어떤 변수, 메서드가 상황에 따라 다른 결과를 내는 것

    • 오버라이딩(overriding) : 부모클래스 메서드를 자식클래스에서 재정의하는 것

    • 오버로딩(overloading) : 한 클래스에서 메소드 이름은 같지만 파라미터 개수나 자료형을 다르게 하여 서로 다르게 동작하게 하는 것

 

 

 

 


SOLID (객체 지향 설계 원칙)

 

  1.  단일 책임 원칙 (SRP, Single Responsibility Principle)

  2.  개방-폐쇄 원칙 (OCP, Open/Closed Principle)

  3.  리스코프 치환 원칙 (LSP, Liskov Substitution Principle)

  4.  인터페이스 분리 원칙 (ISP, Interface Segregation Principle)

  5.  의존관계 역전 원칙 (DIP, Dependency Inversion Principle)