[Java] 객체 지향 Orientation

근이의 개발일기·2024년 6월 20일
0
post-thumbnail

<객체지향>

  • 객체의 특성
    • 객체마다 고유한 특성(state)와 행동(behavior)를 가짐
    • 다른 객체들과 정보를 주고 받는 등, 상호작용하면서 존재
  • Abstraction(추상화) ←4장
    • 유형/무형의 객체를 구성
    • 변수나 함수를 뽑아냄 (실제가 아닌 추상화됨)
  • Encapsulation(캡슐화) ←4장
    • 추상화 후 만들어진 객체(Type별 Clusturing)를 클래스라는 캡슐로 캡슐화
    • 내부를 볼 수 없고 접근할 수 없게 함; 정보은닉을 통한 간접적 접근
    • 클래스: 객체 모양을 선언한 틀
    • 객체: 클래스 모양대로 생성된 실체(Instance)
      • 객체 내 데이터에 대한 보호, 외부 접근 제한
        • 객체 외부에서는 비공개 멤버(필드, 메소드)에 직접 접근할 수 없음
        • 공개된 메소드를 통해 비공개 멤버 간접적 접근
  • Inheritance(상속) ← 5장
    • 상위 개체의 속성이 하위 개체에 물려짐
    • 하위 객체가 상위 개체의 속성을 모두 가지는 관계
      • ex) 생물 ← 동물 / 식물
    • 자식 클래스가 부모 클래스의 속성 물려받고, 기능 확장
    • 부모 클래스: Super Class
    • 자식 클래스: Serve Class (하위클래스) → 부모 클래스를 재사용하고 새로운 특성 추가
  • Polymorphism(다형성) ←5장
    • 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현
    • 다형성 사례:
      • 메소드 오버로딩: 같은 이름이지만 다르게 작동하는 여러 메소드
      • 메소드 오버라이딩: 슈퍼 클래스의 메소드를 서브 클래스마다 다르게 구현
  • 객체 지향 언어의 목적
    • 소프트웨어의 생산성 향상
      • 소프트웨어의 생명 주기 단축
        • 소프트웨어를 빠른 속도로 생산할 필요성 증대
      • 객체 지향 언어
        • 객체화, 캡슐화, 상속, 다형성 등 소프트웨어 재사용을 위한 여러 장치 내장
        • 소프트웨어 재사용과 부분 수정이 빨라 다시 만드는 부담을 대폭 줄임 → 소프트웨어 생산성 향상
    • 실세계에 대한 쉬운 모델링
      • 컴퓨터 초기 시대의 프로그래밍: 수학 계산/통계 처리를 하는 등 처리 과정, 계산 절차 중요
      • 현대의 프로그래밍:
        • 컴퓨터가 산업 전반에 활용
        • 실세계에서 발생하는 일을 프로그래밍
        • 절차나 과정보다 물체들의 상호 작용으로 묘사하는 것이 용이
      • 객체 지향 언어
        • 실세계의 일을 보다 쉽게 프로그래밍하기 위한 객체 중심적 언어
  • 절차 지향 vs 객체 지향
    • 절차 지향 프로그래밍
      • 작업 순서 표현
      • 작업을 함수로 작성한 함수들의 집합
    • 객체 지향 프로그래밍
      • 객체들간의 상호작용으로 표현
      • 클래스 혹은 객체들의 집합으로 프로그램 작성

원본 노션 링크

https://believed-poinsettia-f0f.notion.site/Orientation-974d21fa009243fbb7731a5bf9c66224?pvs=4

0개의 댓글