1 minute read

0.들어가기전에

이 포스팅은 최범균님의 인프런 강의 객체 지향 프로그래밍 입문 를 듣고 한강씩 정리를 하기 위해 적는 포스팅이다.

뭐, 특별히 잘 정리하고자 하는건 아니고, 그냥 내가 보고 기억하기 위해 적는 포스팅이다.

순서는 아래와 같으며, 조금 내가 찾아본 내용과 강의의 내용을 추가하여 다룬다.

배우는내용

  • 1-1.객체
  • 1-2.캡슐화
  • 2.다형성과 추상화
  • 3.상속보단 조립
  • 4.기능과 책임 분리
  • 5.의존과 DI 로 마무리한다.

1-1. 객체란

객체란 무엇일까? 객체는 실제로 존재하는 실체 를 의미한다.

즉 객체란 물리적, 추상적인것들 중 자신의 속성을 가지고 식별이 가능한것들을 말한다.

  • 자동차, 과일 객체는 속성과 동작으로 구성이 된다.
  • 속성 : Field
  • 동작 : Method 객체를 만들는 설계도, 틀 = 클래스 (Class)
  • 참조자료형
  • 추상적
  • 표현 대상들의 공통적이 특징을 서술
  • 객체를 생성하기 위한 필드와 클래스가 정의되어있음,
  • 하나의 클래스로 여러 인스턴스 생성이 가능하다.
  • 클래스가 실체로 만들어진 것이 바로 Object

클래스를 통해 만들어진 객체(Object)__를 해당 클래스의 __인스턴스(Instance) 라 한다.

public class Car {
    public Car() {
        
    }
    
    public static void main(String[] args) {
        // Car(클래스) c1(변수명) = new (클래스로부터 새로운 객체 생성 연산자) Car(); 생성자- 객체 초기화 담당
        Car c1 = new Car();
    }
}
  • New 연산자 가 c1 객체에 저장될 메모리 공간을 할당
  • New 연산자 가 새로 생성된 객체의 주소를 c1변수에 저장
  • 생성자가 c1 객체를 초기화
  • c1을 통해 Car에 접근 한다. heap영역 에 객체가 생성되고 객체의 주소가 리턴 된다.

이러한 객체라는 컨셉을 바탕으로 하는 프로그래밍이 바로 OOP(객체 지향 프로그래밍)이다.

1-2. 캡슐화

캡슐화 의 정의는 필요한 속성(Attribute) 와 __행위(Method)__를 하나로 묶고 그중 __일부를 외부에서 사용하지)

객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직접접근하거나 변경을 할 수 없고, 객체가 제공하는 필드와 메서드를 통해서만 접근이 가능케끔 한다.

이러한 정보은닉의 장점으로는 특정 데이터 및 함수의 직접 접근을 막음으로써 변경을 못하게 하고 유지보수나 확장시 오류의 범위를 최소화할 수 있다.

객체내 정보 손상 오용을 방지하고, 조작법이 바뀌어도 사용방법 자체는 바뀌지 않고, 데이터가 변경이 되어도 다른 객체에 영향을 주지 않기 떄문에 독립성이 좋고, 처리된 결과 사용으로 이식성이 좋고, 객체를 모듀화 할수 있어 새로운 시스템의 구성ㅇ에 하나의 모듈처럼 사요이 가능해진다.

요약 : 캡슐화는 내부의 구현을 감춘다. 내부의 구현 변경에 따른 외부 영향을 최소화 하기 위함이다.

Categories:

Updated: