자바라던지 파이썬이라던지.... 이것들이 객체지향언어라는건 알겠는데,
객체지향이라는 의미가 뭔데? 라는 생각이 들었다.
클라스 하나로도 결국 여러 객체를 만들어내는것이라고 설명했는데..?
이게 뭔소린데?
객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다.
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (출처: 위키피디아)
말 그래로 우리가 배우고 있는게 객체지향언어, 독립적인 함수들과 변수가 모인 클래스들로 객체를 만들어나가며 서로 상호컨텍하여 프로그램을 만들고 있는것이다.
이것을 정확히 이해하자면 그 이전의 패러다임을 다시 둘러봐야한다.
초기에 등장한 이 기법은 말그래도 순차적으로 코드를 짜는 방법이였다.
구조가 없어, A - B - C 순차적으로 코드를 짜다가 C에서 A로, 즉 순차적인
방법을 무시할 때 마다 goto라는문법을 써야하고.... 그러다보면 계속 코드가
반복사용되면서 그나마의 장점이었던 직관적은 날아가버리고 어렵게 꼬여버린
코드가 눈앞에 생성되는것이다...!!! 스파게티코드 으악!!!
이러한 코드의 중복을 피하기 위해 '단일화'할 방법으로 절차적 프로그래밍이
생겨난다.
즉, 반복될 가능성이 있는 모듈을 재사용 가능한 프로시저 단위(함수 단위)로 나눈 프로그래밍이다. => 그냥 모듈을 쪼개 함수를 각각 재사용 가능하게 한다는 의미다.
또한 이 프로시저 안에서 중복되는 부분들은 for문으로 구성하게 하는 방법이다.
c언어의 절차지향 프로그래밍 방법이라고 말 할 수 있겠다.
그런데 이러한 부분에서도 아쉬움의 문제가 발생하는데, 바로 프로시저라는 이 함수들로는(추상적이라고 표현하자, 정확한 수가 들어가있는것이 아니니) 물리적인 변수나 상수등의 값을 관리하기 어려웠다는 것!
=> 그 함수와 자료형이 같이 묶여서 관리해야 나중에 같은 이름의 자료형이 나와도 전혀 영향없이 프로그래밍을 할 수 있었으면 훨씬 에러없이 편하겠지?
이러한 단점을 보안하기 위해 함수와 자료형을 묶어서 관리할 수 있는 객체지향 프로그래밍이 나온것이다. 간단하게 생각한다면 객체는 = 클라스와같이 그 내부에 자료형(Field)과 함수(Method)가 존재한다.
책'이라는 객체 모델을 만든다면 그 책의 쪽수나,이름과 같은 자료형 뿐만 아니라 '책을 읽기', '책을 대여하기' 등의 함수들 역시 "책"이라는 객체로 묶어 놓는 것이다.
객체지향 프로그램은 가능한 모든 물리적, 논리적 요소들을 개체로 만들고 변수와 메소드를 그룹핑한 객체 이 객체들은 다른 객체로 부터 우선적 독립성을 갖는다.
중복코드를 최대로 줄이고, 유지보수가 쉽다는 점이 있다.
더 자세한 설명을 원한다면 참조한 사이트가서 보길 : https://velog.io/@khy226/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-OOP-%EC%9D%B4%EB%9E%80