본문 바로가기

개발 이야기/Java

02. OOP(Object Oriented Programming)

02. OOP(Object Oriented Programming)



왜 학교 다닐 땐, 이 개념이 이해가 되지 않았을까요? 

오늘 주제는 개발을 업으로 삼고서야 정리가 와닿는 [객체지향 프로그래밍] 입니다.


* 객체지향 프로그래밍의 장점

: 유지/보수 용이함



특징1. 추상성

: 클래스 처럼 동일한 기능을 하는 것끼리 묶어둠

: 객체들의 공통적인 성질(프로퍼티 or 메소드)을 묶어 놓는 것


특징2. 캡슐화

: 객체는 메소드를 통해서만 변동 되어야 한다. 다른 객체를 통해 변형하는 것이 어렵거나 불가능하게 설계한다.

사용자에 의해 객체가 쉽게 변한다면, 프로그램이 불안정하다.


특징3. 상속

: 부모 클래스로 부터 물려 받는다.

예) 채용 프로세스에서 서류를 통과해야만 면접을 볼 수 있다고 가정할 때, 면접 지원자 모두는 서류 통과라는 클래스를 상속 받은 것


특징4. 다형성

: 동일한 명칭의 다양한 형태를 인정한다. 같은 모습의 코드가 다른 행위를 하는 것.

예) 핸드폰 터치하는 동작 = 전화걸기/ 문자하기/ 게임하기

▶ 다형성을 추구하지 않으면? 비효율적이다.

          전화거는 키패드/ 게임용 키패드/ 문자보내는 전용 키패드를 각각 따로 만들어야 한다 


 - 오버로딩: 하나의 클래스에서 같은 이름의 메소드를 여러개 가질 수 있음.

    유사한 일을 수행하면서 인자만 다른 메소드들에 대해 각기 다른 이름을 준다면 사용하기 불편하다.

    인자의 타입이나 개수가 다르면 메소드 이름이 같더라도 어떤 메소드를 호출할지 컴파일러가 알 수 있다.


 - 오버라이딩: 슈퍼클래스를 상속받은 서브 클래스에서 슈퍼클래스의 메소드를 동일한 이름/인자/반환 값으로 새롭게 정의.

슈퍼클래스를 상속 받는 여러 서브클래스들이 같은 이름에 다른 기능을 하는 메소드를 정의하고 사용 할 수 있음.