'객체 지향 프로그래밍' 이란?
객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 은
프로그래밍을 할 때 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
프로그램에 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행 할 메소드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있다. 객체는 부품화 와 재사용성 이라는 객체 지향 프로그래밍의 특징을 보여준다.
'객체 지향 프로그래밍' 을 하는 이유?
객체 지향 프로그래밍을 하는 이유는
객체 지향 프로그래밍이 가진 네가지 특징에서 오는 장점들 때문이라고 할 수 있다.
객체 지향 프로그래밍의 네가지 특징
추상화 , 캡슐화 , 상속 , 다형성 이 있다.
객체에서 공통된 속성과 행위를 추출하고
공통의 속성과 행위를 찾아서 타입을 정의하는 과정
추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만든다.
데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 으로
(변수와 함수를 하나로 묶는 것) 낮은 결합도를 유지할 수 있도록 설계
속성과 기능을 정의하는 변수와 메소드를 클래스라는 캡슐에 넣어서 분류하는 것으로 재활용이 원활하다는 장점이 있고 캡슐화를 통해서 정보은닉 을 활용 할 수도 있다.
(접근제어자의 활용)
클래스의 속성과 행위를 하위 클래스에 물려주거나
하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말한다.
새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능이다.
재사용으로 인해 코드가 줄어드는 이점이 있다.
하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있도록
어떠한 요소에 여러 개념을 넣어 놓는 것
객체 지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있기 때문에 다형성이라는 특징을 갖게 된다.
상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 것
같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능을 하는 것
객체 지향 프로그래밍의 장점
- 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합
- 클래스 단위로 수정이 가능하기 때문에 유지 보수가 편리
- 클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이
객체 지향 프로그래밍의 단점
- 처리속도가 상대적으로 느림
- 객체의 수가 많아질수록 용량이 커질 수 있음
- 설계를 하는 과정에서 소요되는 시간과 노동이 클 수 있음