객체지향 프로그래밍(OOP)이란?
객체들로 이루어진 프로그램을 만드는 것입니다.
여기서 객체란 '실제로 존재한다'라는 사전적 의미를 가진 단어이며, 눈에보이는 사물따위의 유형적인 것 뿐만 아니라 논리나 개념과 같은 무형적인 것도 포함합니다.
이러한 객체를 각각의 클래스라는 코드로 구현하고, 이를 부품삼아 하나로 완성된 기계, 즉 프로그램을 만드는 것이 자바에서의 객체지향 프로그래밍을 의미합니다.
//클래스와 객체에 대한 설명
위의 설명처럼 객체지향 프로그래밍은 객체라는 유형, 무형을 포함하는 개념을 컴퓨터에 반영할 수 있습니다.
예를 들어, 케이크를 만드는 상황을 가정하고 컴퓨터에 반영해보겠습니다.
우선 케이크를 만드는 것에 필요한 재료들을 변수로 지정합니다.
그리고 '무엇을 만든다'라는 행위를 클래스로 구현합니다.
이렇게 표현된 클래스를상속받아 '빵을 만든다'라는 클래스를 만들고, 또 이를 상속받아 '케이크를 만든다'라는 클래스를 만들 수 있습니다.
마지막으로 변수와 클래스를 합치면, '케이크에 필요한 재료'들을 통해 '케이크를 만든다'라는 프로그램을 최종적으로 만들 수 있습니다.
즉, 클래스와 변수를 이용해 하나의 상황을 구현한 것입니다.
이처럼 객체지향 프로그래밍은 객체를 코드화시키고, 이러한 객체로 이루어진 프로그램이기에 현실에 존재하는 것을 컴퓨터에 반영하기 적합하다는 장점이 있습니다.
그리고 다른 장점으로는 확장성이 좋다, 혹은 코드를 재활용하기 좋다는 장점이 있습니다.
'케이크를 만든다'라는 클래스는 '무엇을 만든다'라는 클래스에서 비롯된 것입니다.
만약, '무엇을 만든다'라는 클래스를 '컴퓨터를 만든다'라는 클래스로 상속시킨다면 '컴퓨터를 만든다'라는 프로그램이 될 것입니다!
추가적으로 수정이 필요한 부분이 있다면 해당 객체를 찾아 수정하면 되기 때문에 유지보수가 좋고, 클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트에 적합합니다.
물론 단점도 존재합니다.
객체지향 프로그래밍의 장단점을 말할 때, 반대 개념으로 자주 다루는 절차지향 프로그래밍이라는 개념이 있습니다.
절차지향 프로그래밍은 코드를 짠 순서대로, 순차적으로 처리하는 것을 중요시하는 프로그래밍으로, 컴퓨터의 작업 처리 방식과 유사하여 작업 처리 속도가 빠릅니다.
하지만 객체지향 프로그래밍은 수 많은 객체가 상호작용하며 프로그램을 구성하기 때문에 상대적으로 속도가 느립니다.
또한, 필요한 메모리양이 상대적으로 많다는 단점이 있습니다. (객체가 가지는 초기 메모리 용량 때문)
'Memo > 확장 메모' 카테고리의 다른 글
자바의 데이터 타입 : 기본형과 참조형 (0) | 2022.10.04 |
---|