OOP의 4대 기본원칙
객체지향 프로그래밍이란
객체지향 프로그래밍(Object Oriented Programming, OOP)는 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법을 말한다.
클래스 단위로 모듈화 개발로 업무를 분담할 수 있어서 대형 프로젝트에 적합하고, 캡슐화를 통해 유지보수가 용이하며 상속을 통해 코드의 재사용을 높힐 수 있다. 다만 개발속도와 실행속도가 느리고, 코딩의 난이도가 상승한다는 단점이 있다.
객체지향 프로그래밍의 4가지 특징
객체지향 프로그래밍(OOP)에서는 크게 4가지의 특징이 있다.
캡슐화
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법이다. 이 캡슐화를 통해 우리는 감추고 싶은 정보를 감추는 데이터 은닉과 외부로부터 클래스에 정의된 속성과 기능들을 보호할 수 있는 데이터 보호의 기능을 가지게 된다.
JAVA의 경우 캡슐화를 위해서는 멤버 변수 앞에 접근 제어자 private를 붙이고 그 변수에 값을 넣고 꺼내올 수 있는 메서드를 만들어주면 끝이다.
추상화
추상화란 클래스들의 공통적인 특성(변수, 메서드)들을 묶어서 표현해주는 것이다.
자동차와 오토바이의 경우 모두 이동 수단이며 전진과 후진을 할 수 있다는 공통점을 가진다. 이것을 JAVA로 표현하면 자동차와 오토바이라는 하위 클래스(Sub-Class)들의 공통적인 기능(전진/후진)을 추출해 이동 수단이라는 상위 클래스(Super Class)에 정의해주는 것이다.
역할과 구현의 분리를 통해 유연성있고 변경이 용이한 프로그램을 설계할 수 있다.
상속화
상속화란 기존의 클래스들을 재활용하여 새로운 클래스를 작성하는 문법 요소를 의미한다.
추상화의 연장선으로, 상속은 클래스 간 공유될 수 있는 속성과 기능들을 상위 클래스로 추상화시켜서 해당 상위 클래스로부터 확장된 여러 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용가능할 수 있게 한다.
즉, 클래스 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한번 정의하고 간편하게 재사용할 수 있어 코드를 최소화하고 간단하게 할 수 있다.
상속의 경우 상위 클래스의 속성과 기능들을 하위 클래스에서 그대로 받아 사용하거나 오버라이딩을 통해 선택적으로 재정의하여 사용할 수 있는 반면, 인터페이스를 통한 구현은 반드시 인터페이스에 정의된 추상 메서드의 내용이 하위 클래스에서 정의되어야 한다
다형화
다형화, 다형성은 객체 지향 프로그래밍의 꽃이라고도 불린다.
어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미한다.
예를 들어 ‘나’라는 존재는 누군가에게는 친구이며 누군가에게는 자식이고 누군가에게는 생면부지이고 누군가에게는 회사 동료일 것이다. 객체지향에서의 다형성은 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성을 의미한다.
대표적으로 메서드 오버라이딩과 메서드 오버로딩등이 있다.
댓글남기기