면접질문
-
오버로딩과 오버라이딩의 차이점Programming/java 2019. 10. 28. 19:45
지난 포스팅의 객체지향 프로그래밍에서 다형성을 설명할 때, 하나의 클래스 내부에 같은 이름의 기능을 여러 개 정의하거나 상위 클래스의 기능을 하위 클래스에서 다시 정의하는 것, 즉 오버라이딩과 오버로딩에 대해서 간략하게 짚고 넘어갔었다면 이번에는 오버라이딩과 오버로딩이 구체적으로 어떻게 사용되는지. 또, 어떤 차이점을 가지고 있는지에 대해서 알아보자. 우선 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다. 예를들면 키보드나 스마트폰을 예를 들어보자면 키보드는 같은 버튼의 동작 방법을 가지고 있더라도 ESC는 취소, Enter는 실행의 목적을 가지고 있고 스마트폰의 키패드 또한 문자나 게임 등의 모양은 같지만 다른 기능들을 수행하는 것들을 말한다. 자바에서는 주로..
-
MVC? 싱글톤? 여러가지 디자인 패턴들Programming 2019. 10. 28. 02:58
디자인 패턴의 개요 여러 사람이 협업을 하며 프로그램을 개발 할 때 다른 사람이 작성한 코드나 기존의 코드를 이해하는 것은 어렵다. 이런 코드들은 유지 보수를 함에 있어서 새로운 기능을 추가하거나 최적화를 하기에 힘든 구조적인 결함을 가지고 있다. 이를 최소화하기 위해서 디자인 패턴은 등장했다. 특수한 경우의 프로그래머가 아니라면 프로그래밍을 하면서 만나는 문제가 지구상에서 유일한 문제일 경우는 거의 없기 때문에 앞서 이미 많은 수많은 오류들을 피하는 방법을 패턴화하게 된다면 좀더 버그가 발생하는 폭을 줄이고 수정하는데(발생하는 숫자가 아니라 예외를 찾는데 조금더 덜 시간을 사용하게 됨) 최소한의 시간을 들일 수 있게 된다. 즉 디자인 패턴은 프로그램 등을 개발하는 중에 발생했던 문제점들을 정리 및 특정..
-
관점 지향 프로그래밍 AOPProgramming 2019. 10. 17. 19:30
지난 포스팅에서 프로그래밍 패러다임인 객체 지향와 절차형 프로그래밍에 대해서 알아보았다. 그런데 스프링을 공부하다보면 튀어나오는 AOP, 즉 관점 지향 프로그래밍이라는 개념. 객체 지향을 알고있으니 뭔가 프로그래밍 패러다임이라는 것은 알고 있는데 정확히 관점 지향 프로그래밍은 명령형인지 선언형인지 그리고 무엇인지 도통 알 수가 없다. AOP의 개요 프로그래밍 언어에서 절차적은 프로시저를 통해, 그리고 OOP는 클래스를 통해서 분리된 관심과 개념들을 통해 모듈로 분해했다. 앞선 포스팅에서 OOP를 현대에 들어 수 많이 늘어나고 복잡해진 상호작용들과 대응하기 위해서 등장한 개념이라고 설명했다. 하지만 OOP를 적용한다고 할지라도 충분히 분리해 낼 수 없는 부분이 있다는 문제 제기에서 부터 AOP의 개념이 들..
-
객체 지향 프로그래밍이란 무엇인가Programming 2019. 10. 17. 01:45
프로그래밍 패러다임 프로그래밍 패러다임이란 프로그래머가 코드를 짤 때 어떤 관점을 가지고 짜느냐에 결정적인 역할을 한다. 가장 크게는 선언형과 명령형으로 나눌 수 있고, 이안에 우리가 중점적으로 알아볼 객체 지향과 절차 지향, 함수형 프로그래밍이 포함되어있다. 대략적으로 카테고리를 나누어본다면 다음과 같다. 명령형 프로그래밍 - 절차적 프로그래밍(PP) : C - 객체 지향 프로그래밍(OOP) :C++,JAVA,python 선언형 프로그래밍 - 함수형 프로그래밍 : SQL, HTML,Python 명령형 프로그래밍이란 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식이고, 선언형 프로그래밍은 어떤 방법으로 해야하는지 나타내기보다 무엇과 같은지를 설명하는 방식이다. 절차 지향 프로그..
-
프레임워크와 라이브러리의 차이점Programming 2019. 10. 12. 02:00
프레임워크도 알고있고, 라이브러리도 알고있지만 이 둘의 차이점에 대해서는 잘 알지 못하고 넘어가는 경우가 많다. 단순히 API를 모은 게 라이브러리고 라이브러리가 모여서 프레임워크가 되는거 아니야? 라고 말할 수 있지만 사실 그렇게 쉽게 설명되지 않는 문제이다. 프레임워크를 설명할 때 등장하는 다른 여러 개념들이 있기 때문에 이 개념들과 함께 프레임워크를 알아보도록 하자. 프레임워크의 개요 프로그램 개발에 투입되는 개발자들이 늘어남에 따라서(특히 객체 지향 프로그래밍이 늘어남에 따라서) 다양성 또한 비례되어 늘어나고, 전체 시스템의 통합성, 일관성이 부족함을 느끼게 되었다. 그래서 개발자의 자유를 제한하는 대신에 일정한 테두리 안에서 일관되고 유지 보수를 쉽게 개발할 수 있는 환경인 프레임워크를 도입했다..