삼삼고
꿈꾸는 삼삼고
삼삼고
전체 방문자
오늘
어제
  • 분류 전체보기 (179)
    • 후기 (95)
      • 코딩부트캠프 (90)
      • 취업 준비 기간 (5)
    • 백엔드 (20)
      • django (1)
      • 네트워크 (13)
      • 익스프레스 (0)
      • 그래프QL (2)
      • sqlite3 (1)
    • 프론트 엔드 (49)
      • javascript (21)
      • css (6)
      • react (8)
      • HTML (5)
      • UI&UX (8)
    • experience (1)
    • python (1)
    • project (1)
    • CS (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • http://www.tcpschool.com/ajax/ajax_basic_node
  • 코드스테이츠 세션 후기
  • 출처
  • django 첫걸음

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
삼삼고

꿈꾸는 삼삼고

[JavaScript]절차지향vs객체지향
프론트 엔드/javascript

[JavaScript]절차지향vs객체지향

2022. 9. 21. 17:33

📌절차적 언어

요즘 it

일어나는 사건과 순서에 따라 분석을 진행하는 방식의 언어
즉 실행 순서 즉 절차가 더 중점이 되는 언어이다.

📌객체지향 언어

요즘 it

절차 지향이 사건의 흐름 단계라면 객체 지향은 데이터의 단위를 중심으로 분석하는 방식의 언어
즉 객체들의 종류와 속성들이 더 중점이 되는 언어이다.

객체지향 프로그래밍을 통해 데이터의 접근 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 통해 데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리할 수 있게 되었습니다.

자바스크립트는 엄밀히 말해 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성할 수 있습니다.

🦍절차 지향 vs 🦧객체 지향

두 언어로 짜인 예제를 보고 비교해 보자

//절차적 프로그래밍

function constructor() {
    let value = 0;
    value++;
    value--
    value++;
    return value
}
console.log(constructor()) //1


//겍체지향 프로그래밍
class ObjectCounter {
  constructor() {
    this.value = 0;
  }
  
  //객체 지향 언어
  increase() {
    this.value++
  }
  decrease() {
    this.value--
  }
  getValue() {
    return this.value
  }
}
let counter1 = new Counter()
counter1.increase()
counter1.getValue() // 1
  장점 단점
절차적 프로그래밍 -속도가 매우 빠르다 -실행순서가 정해져서 순서가 바귀면 동일한 결과를 보장하지 못한다
-유지 보수와 디버깅이 어렵다
객체 지향 프로그래밍 -프로그램 신뢰성이 높다
-코드 재사용이 쉽다
-업그레이드와 디버깅이 쉽다
-속도가 느리고 설계에 시간이 많이 든다

 

그럼 둘 중에 어느 것이 더 좋을까??

사실 둘 중에 어느 것이 좋고 어느 것으로만 프로그램을 짜야하고 그런 룰은 없다. 개발자의 입장에서는 두 가지 방법 모두 꼭 필요한 방식입니다. 

절차 지향 언어를 통해 큰 규모를 단순하게 정리하고 단순화해서 틀을 만들 수 있고, 객체 지향 언어를 통해서 각각의 틀 안에 배치되었는 데이터들을 최대한 줄이고 재사용하여 복잡하지만 디버깅이 쉽고 신뢰성이 높은 코드를 만들 수 있는 것입니다.

뛰어난 프로그래머라면 이 두 가지 언어를 적재적소에 사용해서 가독성과 기능성을 모두 잡은 프로그램을 제작해야 합니다. 더 자세한 내용이 궁금하시다면 https://m.blog.naver.com/atalanta16/220249264429

 

객체지향 vs 절차지향??

객체지향 프로그래밍을 소개하는 많은 강의 및 입문서에서는 보통 절차지향 프로그래밍 기법과의 ...

blog.naver.com

 

⚡객체지향 프로그래밍의 특징

객체 지향 프로그래밍의 주요 개념 에는 4가지 콘셉트(캡슐화, 상속, 추상화, 다형성)가 존재한다.

🍬Encapsulation(캡슐화)

  • 클래스와 내부 변수와 메서드를 하나로 패키징 하는 것이 특징이다.
  • 은닉(hiding): 구현은 숨기고, 동작은 노출시킴(캡슐화와 비슷한 개념)
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

👯Inheritance(상속)

  • 부모 class의 특징을 자식 class가 상속받는 것
  • 상위 클래스에 이미 정의되어 있는 속성과 메서드를 하위 클래스에서 중복하여 정의하지 않게 하여 유지보수를 쉽게 하고 비용을 줄인다.
  • 파생 클래스에서 필요한 속성/메서드만 추가로 정의할 수 있다.(오버 라이딩, Overriding)

👨‍🎨Abstraction(추상화)

  • 데이터의 공통된 성질을 추출
  • 불필요한 특성을 제거하고 가장 중요한 것에 초점을 두는 단순한 이름(변수)으로 두는 것
  • 사용자가 필요하지 않은 메서드 등을 노출하지 않아 예기치 못한 사용상의 변화를 막을 수 있다.(인터페이스, Interface)

👪polymorphism(다형성)

  • 같은 이름의 메서드를 호출하더라도 객체의 특성에 따라 다르게 동작하는 것을 의미
  • 상위 클래스의 동작을 하위 클래스에서 오버 라이딩하는 것도 다형성의 사례이다.

each Characteristic

Encapsulation Reduce complexity +  increase reusability
캡슐화 복잡성 감소 + 재샤용성 증가
Abstraction Recude complexity + isolate impact of changes
추상화 복잡성 감소+외부의 영향성 0
Inheritance Eliminate redundant code
상속 중복코드 제거
Polymorphism Refactor ugly if/else if statements
다형성 if/else같은 못난이들 재조정

객체 지향은 코드가 복잡하지 않고 재사용성을 높이는 것에 초점이 맞춰져 있는 언어로 위의 4가지 특징을 잘 활용하면 불필요한 코드를 줄이고 가독성을 높여 줄 것입니다. 더 공부를 하고 싶다면 아래 사이트를 참조해 주세요

https://youngjinmo.github.io/2021/04/features-of-oop/

 

객체지향 주요특징 4가지

객체지향을 공부하며 정리한 포스팅이다. 객체지향의 주요 특징 4가지와 원칙 5가지를 구분하여 2개의 포스팅으로 정리했다. 객체지향 특징 4가지일반적으로 자바라는 언어를 공부하면 공부하

youngjinmo.github.io

 

728x90
반응형
저작자표시 (새창열림)

'프론트 엔드 > javascript' 카테고리의 다른 글

[JavaScript] class의 상속  (0) 2022.09.25
[JavaScript]Prototype & Prototype chain  (0) 2022.09.24
[JavaScript]클래스와 인스턴스  (0) 2022.09.21
[JavaScript]고차함수(array.filter, array.map, array.reduce)사용법  (4) 2022.09.21
[JavaScript]javascript중간 정리(koans)  (0) 2022.09.18
    '프론트 엔드/javascript' 카테고리의 다른 글
    • [JavaScript] class의 상속
    • [JavaScript]Prototype & Prototype chain
    • [JavaScript]클래스와 인스턴스
    • [JavaScript]고차함수(array.filter, array.map, array.reduce)사용법
    삼삼고
    삼삼고
    별이 되겠습니다

    티스토리툴바