객체지향 프로그래밍에 대해서 알아보겠습니다
프로그래밍 패러다임(Programming Paradigm)
명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식
선언형 프로그래밍: 어떻게 할건지(How)를 나타내기보다 무엇(What)을 할 건지를 설명하는 방식
객체지향 프로그래밍이란 무엇일까요 ?
객체지향 프로그래밍과 절차지향 프로그래밍 ?
언뜻 보면 둘은 같아 보일 수 있습니다 하지만 둘의 큰차이점은 저런식으로 진행된다가 아니라
객체지향 프로그래밍은 객체의 디자인을 한 뒤에 이들의 데이터플로우를 짜고 진행시나리오를 설계해나가는 방식의 개발방법론일 뿐입니다. 플로우차트 먼저 짜느냐, 데이터모델링을 먼저 하느냐의 차이일 뿐이지 그 이후로는 절차지향 프로그램이나 객체지향 프로그램이나 다들 정해진 알고리즘을 따라 순서대로 실행되는건 마찬가지입니다.
객체지향 프로그래밍의 키워드 5개
클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것으로 실제 프로그램에서 사용되는 데이터
위의 예시와 같이 클래스와 인스턴스는 서로 상속 관계 이다
또한 클래스를 더 디테일 하게 나눌 수도 있다
위의 예시처럼 서로 상속 상속 상속을 하게 된다
코드를 재수정 없이 재활용 하는것 .
접근 제어자를 통한 정보 은닉
절차 지향 프로그래밍에서도 라이브러리를 통해서 변수와 함수를 재활용 할 수는 있었지만, 코드의 수정이 일어났을 때 영향 범위를 예상하기 어려운 문제가 있었다 .
그러나 객체지향 프로그래밍에서는 캡슐화를 통해 객체가 외부에 노출하지 않아야 할 정보 또는 기능을 접근 제어자를 통해 적절히 제어 권한이 있는 객체에서만 접근이 가능하도록 할 수 있기에 코드의 수정이 일어났을 때 책임이 있는 객체만 수정 하면 되기에 영향 범위를 예측하는데 수월해졌다.
뿐만 아니라 관련된 기능과 특성을 한곳에 모으로 분류하기 때문에 기능과 특성의 모음을 클래스 라는 캡슐에 분류해서 넣는것이 캡슐화다
절차지향 프로그래밍에서도 라이브러리를 통해서 남이 짜놓은 소스코드를 가져와 사용 할 수 있었습니다 하지만 내의도에 맞게 수정하게 되면 다른 라이브러리가 되어 버전에 따라 동작 하지 않을 수도 있고 불필요한 코드의 수정 작업을 해야 합니다
이런 문제를 해결하기 위해 상속 이라는 것을 도입 하였습니다
상속은 부모클래스의 속성과 기능을 그대로 이어받아 사용 할 수 있게 하고 기능의 일부분을 변경해야 할 경우 상속 받은 자식 클래스에서 해당 기능만 다시 수정하여 사용 할 수있게 하는 것 입니다
다중상속은 불가합니다 클래스의 상속 관계에서 혼란을 줄 수 있기 때문에 상속은 반드시 하나만 가능하고 필요에 따라 인터페이스를 사용 할 수 있게 했습니다
이렇게 객체 지향 프로그래밍에 대한 것과 키워드 5개를 알아보았습니다 .