본문 바로가기
CS

얕게 생각하고 경험에 바탕하는 객체지향(내 주관)

by 갈잃자 2024. 1. 28.

개요

현재 다니는 회사는 프론트엔드 프레임워크로 Angularjs를 이용중이다.

Angularjs 는 클래스 기반의 구조로 컴포넌트들을 제작하고, 클래스 기반 구조의 가장 큰 장점인 객체 지향 프로그래밍 방법에 대해서 얕지만, 경험을 바탕으로 작성하고자 한다.


객체지향이란?

  • 객체 지향 프로그래밍(OOP)는 프로그래밍에서 필요한 데이터를 추상화 시켜 상태 와 행위를 가진 객체로 만들고, 객채들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

왜 객체지향 프로그래밍을 이용할까?

  • 당연히, 이미 회사에서 채택한 프레임워크이고 이게 단순히 객체 지향 프로그래밍처리를 선호하니 회사 규칙에 따라서 쓴다고 생각.

하지만, 왜 회사에서 채택했는지 생각했을 때, 내가 객체 지향 프로그래밍 기법을 이용하며 느낀 가장 큰 장점은 모듈화 와 코드 재사용성 이다. 이게 매번 함수를 제작하지 않아도 되고, 유지보수를 용이하게 만들어준다. (하지만, 이미 있는 객체나 함수여도 회사 내부 코드를 잘 알지 못하면 새로 만드는 경우가 많음ㅋㅋ)

 

** 객체지향 프로그래밍 특징 (얕은 지식, 경험 바탕)

1. 추상화

  • interface를 이용하여, 명령어를 줄이고, 클래스보다 큰 틀을 제작할 수 있음.
  • 해당 interface를 이용 할 class는 이 interface를 implements 하여 필수적으로 interface 내부에 있는 메서드를 구현해야 한다.

2. 캡슐화

  • 클래스의 존재를 가장 직관적으로 보여주는 특징 (데이터와 기능이 클래스로 캡슐화 되어있기 때문!)
  • 캡슐화 된 컴퓨터 자원의 묶음을 객체(object)라고 함

3. 상속

  • extends 되는 걸 의미.
  • 부모 클래스에서 생성한 변수와 메서드를 그대로 물려받아 사용 할 수 있음
  • super() 함수와 클래스 옆에 붙는 extends 를 생각하면 편함
class LoginComponent extends AuthComponent {

	  constructor() {
    super();
  }
}

 

4. 다형성

  • 부모에서 자식으로 상속받은 메서드를 자식은 그대로 사용하지 않고, 입맛에 맞춰 이용할 수 있다.

5. 은닉성

  • private와 public 존재를 의미한다.
  • 바깥(외부 컴포넌트)에서 호출할 때 발생하는 오류를 방지할 수 있음

댓글