본문 바로가기

object-oriented programming

(4)
[객체지향 프로그래밍] 상속이란? 상속 Inheritance 한줄 요약 : 상속이란 이미 존재하는 클래스를 기반으로 새 클래스를 만드는 방법이다. 상속은 이미 잘 개발 된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 개발 시간을 단축 시킬 수 있다. 상속에 대한 비판 이미 테스트까지 끝낸 부모 클래스를 다시 테스트 할 필요가 없다는 주장도 있지만 상속 받은 자식 클래스에서 부모 클래스를 다른 방식으로 사용하며 버그가 일어날 수도 있다. 특히, 하위 클래스 구현시 상위 클래스의 내부 구현을 알아야한다는 점에서 캡슐화를 깬다. 이를 방지하기 위해 자식 클래스에게도 공개하지 않도록 private 접근 지정자를 지원한다. 따라서 protected를 남발하기보단 필요한 곳에만 사용할 필요가 있다. 자식 클래스는 부모 클..
[객체 지향 프로그래밍] 캡슐화란? 캡슐화란 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말합니다. 아래 그림은 캡슐화의 기본 내용을 잘 표현하고 있습니다. 즉 서로 관련 있는 데이터와 이를 처리할 수 있는 기능들을 한곳에 모아 관리하는 것입니다. 자바 객체 지향 프로그래밍에서 이렇게 캡슐화를 하는 이유로 크게 두 가지를 언급할 수 있습니다. 데이터 보호(data protection) – 외부로부터 클래스에 정의된 속성과 기능들을 보호 데이터 은닉(data hiding) – 내부의 동작을 감추고 외부에는 필요한 부분만 노출 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한부분만 외부로 노출될 수 있도록 하여 각 객체 고유의 독립성과 책임 영역을 안전하게 지키고..
[객체지향 프로그래밍] '추상화'란 무엇인가? 객체지향 프로그래밍에서 '추상화'란 무엇인가? 한줄 요약 : 데이터 내부의 동작을 숨겨 내부에 직접 접근하지 못하게 하는 것. 컴퓨터 공학의 여러 과목들을 배우다보면 '추상화'라는 단어를 자주 접할 수 있다. 컴퓨터 공학에서는 어떤 것의 내부적 구현을 알 필요가 없을 때 '추상화 되었다'라고 표현을 한다. 예를 들어, 컴퓨터가 이해하는 일련의 비트열은 인간이 그나마 이해할 수 있는 어셈블리어로 추상화된다. ADD라는 어셈블리 명령어를 쓰는 인간 입장에서는 그 명령어가 구체적으로 어떤 비트열인지 알 필요는 없다. 절차지향 프로그래밍에서도 '추상화'의 개념이 있다. 대표적인 것이 함수(프로시져)이다. 함수는 유효한 매개변수에 대해서 유효한 반환값을 주는 것을 보장한다. 함수 내부적으로 어떻게 동작해서 값을 ..
[객체지향 프로그래밍] 프로그래밍 패러다임이란 무엇인가? 프로그래밍 패러다임 패러다임(영어: paradigm)은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. 따라서 '프로그래밍 패러다임'은 프로그램을 어떻게 인식하는가에 대한 틀을 제공한다. 프로그래밍 패러다임에는 여러가지가 있지만 대표적으로 명령형 프로그래밍( imperative programming ), 절차지향 프로그래밍(Procedural programming), 객체지향 프로그래밍(Object-Oriented Programming) 등이 있다. 명령형 프로그래밍은 자연 언어에서의 명령법이 어떤 동작을 할 것인지를 명령으로 표현하듯이, 명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이..