[JAVA] 객체 & 객체 지향 프로그래밍(01.08)

늘보·2025년 1월 8일

Java

목록 보기
10/17
post-thumbnail

객체란?

특성(속성)행동(행위)를 가지는, 식별이 가능한 모든 것을 의미한다.

💡 속성: 필드 (Field) | 행위: 메서드 (함수)

자동차를 기반으로 속성과 행위에 대해 알아보자면 아래와 같다.

  • 자동차는 회사, 가격, 색상 등의 속성을 지니고 있다.
  • 자동차는 브레이크, 조명, 경적 등의 행위를 지니고 있다.

따라서 이러한 속성과 행위를 지니는 객체를 소프트웨어 객체로 설계하는 것객체 모델링이라고 한다.


객체 간의 관계

사용 관계

  • 객체 1객체 2가 가지고 있는 메서드를 호출한다.
  • 객체 2는 이에 반응해 전달 받은 파라미터(매개변수)를 가공해 리턴 타입의 값을 반환하게 된다.

❗객체들은 메서드를 통해 데이터(매개변수)를 주고 받을 수 있다.

이처럼 속하지 않고 서로를 사용하는 관계를 사용 관계라고 한다.


포함 관계

  • Car라는 이름을 가진 객체에는 Door, Tire, Handle이라는 이름을 가지는 객체가 존재한다. 즉, 객체 2, 3, 4Car라는 객체에 속한다는 의미가 된다.

이처럼 한 객체 내에 속하는하는 관계를 포함 관계라고 한다.


상속 관계

  • 객체1 (공장)에서 만든 특정 부품을 객체2 (자동차)객체3(기차)가 동일하게 사용한다.
  • 객체2객체3는 객체1에게 특정 부품을 상속받아서 사용하는 관계이다.

이처럼 한 객체 내 동일한 기능을 다른 객체가 상속받아 사용하는 관계를 상속 관계라고 한다.


객체지향 프로그래밍 특징

캡슐화 (Encapsulation)

필드메서드를 하나로 묶어 객체로 만든 후 외부에서 알 수 없도록 감추는 것을 의미한다.

외부 객체에서는 캡슐화된 내부 구조를 알 수 없기 때문에 보안이 강화 되고 외적 요인에 의해 변화되지 않는다. 또한 불필요한 정보를 외부로 노출시키지 않아 혼란을 줄여주기도 한다.

💡 캡술화된 필드와 메서드를 노출시킬지 말지 결정하기 위해서는 접근제어자 가 필요하다! [접근 제어자란?]


상속

객체 지향 프로그램에는 부모 객체자식 객체가 존재한다. ([상속] 링크 참고 예정)

부모 객체는 자신의 필드와 메서드를 자식 객체에게 물려주어 사용할 수 있도록 해준다.
❗ 부모의 필드와 메서드를 쓸지 말지는 자식 객체가 결정한다.

  • 객체들을 상속 관계로 묶을 시 객체간의 구조를 파악하기 쉬워진다.
  • 부모객체가 수정되었을 때 자식 객체에게도 영향을 주기 때문에 일관성 유지에 좋다.
  • 코드 중복이 줄어들고 재사용성이 증가한다.

다형성

상위 클래스 타입의 참조변수를 통해서 하위 클래스의 객체를 참조할 수 있도록하여 상위 클래스가 동일한 메서드로 하위클래스들이 서로 다른 동작을 할 수 있도록 해주는 것을 말한다.

  • 다형성은 여러객체하나의 타입으로 관리할 수 있기 때문에 유지보수가 용이하다.
  • 객체 재사용성이 증가한다.

❗상위와 하위 클래스는 반드시 상속 관계여야하며, 오버라이딩이 반드시 필요하다. [오버라이딩] 링크 참고 예정


추상화

객체에서 공통된 부분들을 모아 상위 개념으로 선언하는 것을 의미한다. [abstrct] 링크 참고 예정


profile
누워만 있지 말고 제발 뭐라도 하자.

0개의 댓글