본문 바로가기

프로그래밍 패러다임/객체 지향 프로그래밍5

OOP.2.상속과 다형성 이번 글에서 알아볼 객체지향의 특징은 상속과 다형성 입니다. 먼저 추상화와 캡슐화를 통해 정의한 객체(클래스)들은 다양한 관계를 갖게 되는데요. 그 중 상위와 하위 구조를 가지게 되는 하이어라키 구조에 속한 관계들이 있습니다. 상속은 대표적인 하이어라키 구조입니다. 여러 클래스들의 공통적이고 일반적인 특성을 추출해 좀 더 추상화 레벨이 높아 일반적인 상위 클래스로 정의 할 수 있습니다. 그 후 하위 클래스 정의시 중복되는 부분은 재정의 없이 상위 클래스의 필드와 메소드를 '상속'받아 사용할 수 있습니다. JAVA에서는 Extends라는 키워드로 상속을 지원하고 단일 상속만을 지원합니다. java는 상속을 편하게 지원해주는 super와 this라는 키워드를 제공함으로써 부모 클래스로 부터 물려받은 다양한 .. 2023. 7. 14.
OOP.2.추상화와 캡슐화 - 2 이번 주제는 캡슐화 입니다. 저번 글에서 캡슐화 부분을 간단히 언급하고 넘어갔기 때문에 자세히 살펴보려 합니다. 먼저 캡슐화의 기본 개념은 객체를 추상화해 나온 정적 특성과 동적 특성을 한데 묶어 관리하는 것 입니다. 캡슐화로 얻어지는 효과는 두 가지가 있습니다. 데이터 보호와 절차 은닉입니다 데이터 보호는 정적 모델링을 통해 추출된 Field 데이터 접근 권한을 클래스 내부로 제한함으로써, 외부에서 데이터 조작이 불가능 하도록 보호합니다. 데이터 조작은 오직 공개된 Method를 통해서만 가능합니다. 또 클래스 외부에서 Method를 단순 호출하여 사용하므로 내부에서 어떤 절차로 메소드가 작동하는지 절차적 은닉이 가능해집니다. 이것을 절차 은닉이라고 부릅니다. Java에서는 Access Modifier.. 2023. 7. 6.
OOP.2.추상화와 캡슐화 - 1 이번 글에서는 객체지향의 4가지 특징중 두개인 추상화와 캡슐화에 대해서 다루어 보겠습니다. 객체, 클래스, 인스턴스는 엄밀하게 서로 미묘한 차이를 가지지만, 일반적으로 대화하거나 소통시에는 비슷한 의미로 많이 통용되는 경우가 많습니다. 하지만 본 글에서는 추상화의 원활한 설명을 위해서 차근차근 용어부터 정리하면서 시작하도록 하겠습니다. 1) Object 객체 드디어 객체 지향 프로그래밍 이라는 큰 제목을 일부 설명할 수 있는 '객체(Object)'에 대한 이야기가 나왔습니다. 객체는 실제 세상에 존재하는 사물이나 개념을 의미해요. 수많은 사물이나 개념들 중 내가 시스템으로 옮길 대상을 의미합니다. 피트니스 짐, 헬스장을 시스템으로 옮긴다고 생각해볼까요? 트레이너도 객체가 될 수 있고, 회원도 객체가 될 .. 2023. 7. 5.
OOP.1.객체 지향이란 무엇이며 왜 사용하는가? 객체지향은 1970년대 앨런 케이로부터 시작되어... 얼른 주변 사람 10명에게 이 글을 보여주지 않으면 불행이 찾아올 것 같은 행운의 편지 스타일의 서론은 접어두고, 좀 더 본질적인 질문을 던져보고 싶습니다. 대체 프로그래밍은 무엇이며 우리는 왜 프로그래밍을 하는 것일까요? 답은 간단합니다. 사람이 할 일을 컴퓨터에게 시키고 싶은거죠. 대규모 언어모델이 발전하면서 인간의 언어로 컴퓨터와 소통하고 컴퓨터가 알아서 모든걸 해줄 것 같은 시대가 다가오고 있는 느낌이지만, 아쉽게도(저 같은 개발자 지망생에게는 다행이게도) 여전히 컴퓨터는 인간이 시킨 일 만 수행할 줄 아는 기계입니다. 또, 컴퓨터에게 일을 시키기 위해선 여전히 컴퓨터가 이해할 수 있는 언어로 대화를 시도해야 하죠. 기계어를 할 줄 아는 인간은.. 2023. 7. 4.