oop 객체지향? 그게 도대체 먼데?


절차적 프로그래밍

초기 프로그래밍 방식
컴퓨터가 해야할 일들을 쭈~욱 순차적으로 나열해 놓는 코딩 방식
예) AllInOneController 클래스의 각 API 처리내용

 장점
   - 컴퓨터의 처리구조와 유사해 실행속도가 빠름
 단점
   - 유지보수가 어려움
   - 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움
   - 디버깅이 어려움

객체지향 프로그래밍

하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍하는 것
"주제별"로 정리해서 메모한다. (ex. 주식 투자, 바리스타 공부)
예) 뭔가 자를 것이 필요하면 '✂️' 를 떠올림 (class Sciccors)
     종이에 적을 게 필요하면 '✏️' 을 떠올림 (class Pen)
     "하나의 역할" → 객체

장점
  - 메모를 작성하기에 편함 (직관적)
   
단점 
  - 메모양이 많아지면 정리가 어려움
  - 내가 원하는 메모 내용을 찾기 어려움

객체지향 프로그래밍 특성

  • 캡슐화: 데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것.
    이 특징 때문에 데이터와 코드의 형태를 외부에서 알 수 없다.
  • 추상화: 실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한(공통적인)
    부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것.
  • 상속성: 부모가 자식에게 유전자를 물려주듯, 상위 클래스의 모든 것을 하위 클래스가 이어 받는 것.
  • 다형성 -> 많을 다(多), 형상 형(形), 성품 성(性)
    - Overload (사전적의미: 과적하다, 너무많이주다, 과부하가 걸리게하다.)
    : 같은 이름의 함수, 연산자에 다른 기능을 정의함. 리턴타입 상관없음.
        - Override (사전적의미: 무효로 하다, 무시하다, 치환하다.)			
        	: 상속이 전제되어 있는 상황에서, 부모에게 물려받은 method를 자식의 입에 맞게 내부 실행코드만 수정하여 사용하는 방식.
           ※주의할점.
            - method 이름이 같아야함.
            - 변수의 데이터타입 및 갯수가 같아야함.
            - 리턴 타입도 동일해야됨.

References

https://blog.naver.com/PostView.naver?blogId=gitacademy01&logNo=222394033958&redirect=Dlog&widgetTypeCall=true&directAccess=false
https://blog.naver.com/rlacksghl123/222619951737

좋은 웹페이지 즐겨찾기