객체지향(OOP)

배세훈·2021년 10월 12일
0

객체지향

목록 보기
1/2

객체지향 프로그래밍의 등장

자료형과 함수를 '객체' 형태로 함께 묶어서 관리하기 위해 객체지향 프로그래밍 패러다임이 등장하게 되었다.
핵심 포인트는 객체 내부에 자료형 필드와 함수가 함께 존재하는 것이다.
가능한 모든 물리적, 논리적 요소를 객체로 만드는 것이 객체지향 프로그래밍이다.

예시로 책의 제목, 저자, 페이지수와 같은 자료형 필드와 대출하기, 반납하기 등의 메소드를 책이라는 객체에 몽땅 묶어서 관리하는 것이 가능해진다.
이렇게 되면 추상적이었던 동작도 훨씬 직관적으로 보이게 되어 코드 가독성이 증가한다.

결론적으로 객체 간의 독립성이 뚜렷하게 생기고 중복되는 코드의 양이 줄어든다.
따라서 유지보수에 용이해질 것이다.

객체지향 프로그래밍의 4가지 특징

1. 추상화 (Abstraction)

객체들이 공통적으로 필요로 하는 속성이나 동작을 하나로 추출해내는 작업
세부적인 사물들의 공통적인 특징을 파악한 후 하나의 묶음으로 만들어내는 것이 추상화다

2. 캡슐화 (Encapsulation)

정보 은닉화를 통해 높은 응집도, 낮은 결합도를 유지할 수 있도록 설계하는 것

한 곳에서 변화가 일어나도 다른 곳에 미치는 사이드 이펙트를 최소화 시키는 것을 의미한다.
즉, 객체 내부의 어떤 동작에 대한 구현이 어떻게 되어있는지 감추는 것이다.

결합도란 어떤 기능을 실행할 때 다른 클래스나 모듈에 얼마나 의존적인지를 나타내는 지표이다.

객체 각각은 독립적으로 작용할 수 있도록 응집도가 강해야 하고 다른 모듈을 참조하는 결합도는 낮아야 한다.

높은 응집도와 낮은 결합도는 '은닉화'를 통해 이루어낼 수 있다. 외부에서 접근할 필요 없는 것들은 접근 지정자를 private 으로 두어 접근에 제한을 두는 것이다. 외부 객체는 객체 내부의 구조를 모르게 하고 해당 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있도록 하여 의도하지 않은 동작 오류를 방지하고 유지보수 효율을 높일 수 있다.

3. 상속

공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 과정

재사용 관점에서 사용 X, 기능의 확장 관점이나 IS-A(ex: 토끼는 동물이다.) 관계 성립할 때 사용

4. 다형성

서로 다른 클래스의 객체가 같은 동작 수행 명령을 받았을 때 각자의 특성에 맞는 방식으로 동작하는 것

@Override

profile
성장형 인간

0개의 댓글