● 객체지향 프로그래밍
객체지향 프로그래밍이란 프로그램의 규모가 점점 커지고, 그 프로그램을 사용하는 사용자들의 요구가 빠르게 변화해가는 상황을 기존의 절차적 언어(절차적 프로그래밍)로는 극복하기 어렵다는 상황에까지 이르면서 1995년 자바의 발표 이후 객체지향 언어는 프로그래밍 언어의 주류로 자리 잡게 되었다.
'객체지향 언어' 란 기존의 프로그래밍 언어에 약간의 룰을 접한 것으로써, 아주 간단하게 이 규칙에 대해 말하자면 코드를 유연하게 만들기 위한 룰이라고 볼 수 있다. 이러한 룰을 적용시킨 이유는 앞서 말한 빠른 시대적 변화에 대응하기 위하여 많은 개발자들이 프로그램에 대한 개발과 유지보수를 용이하게 만들기 위함이다.
이러한 규칙을 접목시킨 객체지향 언어의 특징이란 다음과 같다.
1. 코드의 재사용성을 높여준다.
2. 프로그램을 유연하게 해주고 관리,변경이 용이하다.
3. 신뢰성이 높은 프로그래밍을 가능하게 해 준다.
이러한 객체지향의 특징에 대한 이해를 바탕으로 거시적 관점에서 프로그래밍할 수 있는 능력을 키워나가는 것이 아주 중요하다고 할 수 있다.
6/2일 추가내용
※ 본 추가내용은 책 '자바의 정석' 과 인프런 김영한강사님 자료를 토대로 작성함 ※
객체지향프로그래밍이 프로그램을 유연하고 변경을 용이하게 만들어 준다고 하였는데
과연 이게 무슨뜻일까?
마치 컴퓨터의 부품을 조립하거나 부품을 변경하듯이 프로그램을 유연하게 변경하면서 개발할 수 있게 하는것
프로그램의 코드를 컴퓨터 부품 갈아 끼우듯 변경하고 관리할 수 있게 해주는 개념이 바로 다형성(Polymorphism) 이다.
코드에서 다형성의 개념이 왜 중요한지 비유를 들어 설명하자면,
로미오와 줄리엣이라는 연극에서 로미오 역할과 줄리엣의 역할을 맡는 배우들이 각각 다른 배우로 바뀌어도
로미오와 줄리엣 공연 자체에는 영향을 주지않는다.
로미오 배역을 맡은 사람은 줄리엣 배역을 맡은 사람이 누구인지 상관없기 때문이다.
로미오를 연기하는 사람은 대본에서 줄리엣의 극중의 대사만 알면된다.(반대로 줄리엣 입장에서도 마찬가지)
로미오를 클라이언트(client) , 줄리엣을 서버(server)로 가정한다면
(클라이언트/서버(client/server) 구성에서 사용자측. 사용자가 서버에 접속했을 때 클라이언트는 사용자 자신을 지칭할 수도 있고, 사용자의 컴퓨터를 가리키기도 하며, 컴퓨터에서 동작하고 있는 프로그램이 될 수도 있다.)
클라이언트는 서버의 인터페이스(줄리엣 역할)만 알면 된다.
이렇듯 다형성은 역할(줄리엣)과 구현(줄리엣을 맡은 배우)을 분리해내는것이다.
따라서 정리해보면
- 클라이언트는 대상의 역할(인터페이스)만 알면된다.
- 클라이언트는 구현 대상의 내부 구조는 몰라도 된다.
- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.
역할과 구현의 분리 (Java)
- 자바의 다형성 -> 역할(인터페이스) , 구현(인터페이스를 구현한 클래스, 구현 객체)
- 객체를 설계할 때 역할과 구현을 명확하게 분리해야한다.
- 객체 설계시 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만들어야한다.
결론적으로
클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경하는것이 다형성의 본질이다.
다형성의 구체적인 기능들에 대한 설명은 블로그에 정리해놓은 시리즈들이 존재하니 참고해보면 좋을듯하다.
블로그의 게시물 바로가기
'Java > Java Study' 카테고리의 다른 글
new 연산자 와 객체생성에 대하여 (0) | 2021.04.24 |
---|---|
Call by value (0) | 2021.04.19 |
[객체지향] 클래스, 객체, 인스턴스 (0) | 2021.04.12 |
java 스터디 2주차 (0) | 2021.01.21 |
java 스터디 1주차(1/11~17) (0) | 2021.01.15 |