oop의 4가지 특징

suzi_911·2020년 12월 21일
0

객체지향언어의 특성으로는 아래같이 4가지가 있습니다.

캡슐화(Encapsulation)
상속(Inheritance)
추상화(Abstraction)
다형성(Polymorphism)

캡슐화(Encapsulation)

캡슐화의 속성으로는 2가지가 있습니다.

  1. 필드와 메소드를 클래스로 묶는 데이터 캡슐화
  2. 외부에서 객체의 상태를 변경하는것을 막기위한 은닉화(접근제어자, setter, getter의 사용)

또한 프로그램을 설계 할때 높은 응집도(변경시 해당 클래스만 변경됨)와 낮은 결합도(다른 클래스들의 간섭이 낮음)를 유지해야 요구사항을 변경하기 쉬운데, 캡슐화는 낮은 결합도를 유지할 수 있도록 해주는 객체지향 설계 원리입니다.

상속(Inheritance)

자식 클래스가 부모 클래스를 물려받고 기능을 추가하여 확장하는 개념
부모클래스는 슈퍼클래스(Super Class)라고 부르며 자식 클래스를 (Sub Class)라고 부릅니다.
서브클래스는 슈퍼클래스의 속성을 물려받아 재사용함으로써 코드 작성에 드는 시간과 비용을 높이이는 효과가 있습니다.

추상화(Abstraction)

추상화란 말 그대로 상세한 정보는 무시하고 필요성에 의해 있어야할 정보들만 간추려서 구성하는 것입니다.
추상메소드와 인터페이스가 그 예입니다.

벤츠, 아우디, 소나타, 티코, 밴틀리 등등 우리가 생각하는 여러 종류의 자동차가 있습니다.
이것을 다 클래스화하고 변수와 메서드 등을 개별적으로 만드는 것은 무모한 짓입니다.
따라서 방금 나열한 자동차들의 공통적인 요소나 특징을 추출하는 과정인 추상화를 거쳐 요소를 끄집어 내면,
바퀴,배기통,핸들,차문,유리창,등 필수적인 부품이 있고 바퀴는 굴러가야하며, 핸들은 좌우로 돌아가야하고
차문은 열려야한다는 공통적인 행등 즉 어떤 차든 필수적으로 필요한 메서드가 추출됩니다.
이러한 과정이 추상화하는 과정입니다.

다형성(Polymorphism)

오버라이딩(overriding), 오버로딩(overloading)이 핵심!

Animal이라는 클래스를 강아지, 고양이,닭이 상속을 받았습니다. Animal클래스에 있는 소리내기 메소드를 서브클래스들은 다르게 구현했습니다.
강아지 "멍멍"
고양이 "야옹"
닭 "꼬꼬댁"

이처럼 슈퍼클래스에서 구현된 메소드를, 서브 클래스에서 동일한 이름으로 자신의 특징에 맞게 재작성하는 것을 오버라이딩(overriding)이라고 합니다.
다른사례로는 클래스 내에서 이름이 같지만 서로 다르게 동작하는 메소드를 여러개 만들어 작성하는 것을 오버로딩(overloading)이라고 합니다.

출처: https://interconnection.tistory.com/112 [라이언 서버]

0개의 댓글