오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Paradigm 8

추상클래스와 인터페이스 차이

매번 사용하면서도 모르는 추상클래스와 인터페이스의 차이에 대해 설명하려고 한다. 구글에 검색해봐도 사실 어려운 이야기만 잔뜩 있어서 이게 뭐지 라는 생각만 든다. 나는 이 둘의 차이를 용도의 차이 측면에서 보려고 한다. 결론부터 말하면 추상클래스는 확장해서 사용하기 위함이고 인터페이스는 설계를 위함이다. 아직 무슨 말인지 감이 오지 않을 것이다. 먼저 추상 클래스의 예시를 보자! 1. 추상 클래스 예를 들어 Company 라는 추상 클래스가 있고 이 클래스는 아래와 같다. 추상클래스는 자식 클래스들의 공통된 구현을 추상 클래스 내에 정의된 상수나 구현을 이용해 중복을 없애고 추상 메서드를 이용해 자식들의 구현을 강제한다. abstract class Company { private name: string;..

Paradigm/OOP 2022.08.21

클래스와 객체

클래스 : 공통적인 상태와 행동을 공유하는 객체들을 추상화한것 클래스를 구현하거나 다른 개발자에 의해 개발된 클래스를 사용할 떄 가장 중요한 것은 클래스의 경계를 구분 짓는 일 객체 객체는 상태와 행동을 갖는다. 접근 제어 매커니즘: 접근 수정자 캡슐화와 접근제어는 객체를 두부분으로 나눈다. 퍼블릭 인터페이스 : 외부에서 접근 가능한 부분 구현 : 오직 내부에서 접근 가능한 부분

Paradigm/OOP 2021.09.29

의존성

어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이의 의존선이 존재 의존성은 구현 시점과 실행 시점에 따라 다른 의미를 갖는다. 실행 시점 : 의존하는 객체가 정상적으로 동작하기 위해서는 실해 시에 의존 대상 객체가 반드시 존재 구현 시점 : 의존 대상 객체가 변경 때 의존하는 객체도 변경 의존성 : 변경에 의한 영향의 전파 가능성 의존성 전이(transitive dependency) A 객체가 B 객체에 의존하면 A객체는 B객체가 의존하는 다른 객체에 대해서 의존적이다. 의존성의 종류 직접 의존성: 한 요소가 다른 요소에 직접 의존하는 경우 간접 의존성: 한 다리 건너서 의존하는 경우 의존성 전이에 의해 영향이 전파 되는 경우 런타임 의존성: 애플리케이션이 실행되는 시점 컴파일 타임 의..

Paradigm/OOP 2021.09.28

역할, 책임, 협력, 메세지

객체지향은 객체간의 협력을 통해 시스템을 구성하는 것 객체간의 협력은 메세지를 통해 이루어지며 메세지의 맥락에서 특정한 역할을 한다. 이 역할을 책임이라고 한다. 객체는 자신을 스스로 책임진다. 자신을 스스로 책임진다 = 객체를 캡슐화 한다, 자율성을 높음 객체와 객체가 상호 작용할 수 있는 방법은 오직 메세지 수신된 메세지를 처리하기 위한 방법이 메서드

Paradigm/OOP 2021.09.28

추상화 매커니즘

추상화 매커니즘에는 프로시저 추상화와 데이터 추상화가 있다. 이 두 추상화 매커니즘은 시스템을 분해하는 방법이며 프로시저 추상화 중심으로 시스템을 분해한다면 기능분해(또는 알고리즘 분해)의 길로 가는 것이다. 데이터 추상화의 경우 데이터를 중심으로 타입을 추상화 하는 경우가 있고 데이터를 중심으로 프로시저를 추상화 하는 방법이 있다. 전자를 추상데이터 타입 후자를 객체 지향이라고 한다. 타입은 변수에 저장할 수 있는 내용물의 종류와 변수에 적용될 수 있는 연산의 가짓수를 의미한다. 리스코프는 "Programming with Abstract Data Types"에서 프로시저 추상화를 보완하기 위해 데이터 추상화 개념을 제안했다. 추상 데이터 타입을 구현하기 위해서 다음과 같은 특성을 프로그래밍 언어에서 지..

Paradigm/OOP 2021.09.28

[객체 지향 프로그래밍] 1. 객체지향 프로그래밍이란?

본격적인 설명에 앞서서 앞으로 몇개의 포스팅동안 객체지향 프로그래밍(OOP, Object Oriented Programming)과 그것의 기본 원칙인 SOLID 원칙에 대해서 다뤄보도록 하겠다. OOP를 이해하려면 몇가지 중요한 개념을 알아야하는데 이 개념이 지나치게 추상적이다. 객체라는 말 자체도 일상적으로 사용하는 언어가 아닐뿐더러 OOP의 중요 개념들이 한번에 정의 내리기가 어렵다. 프로그래밍을 시작한지 얼마되지 않아 "객체 지향의 사실과 오해" 라는 책을 읽은 적이 있다. 읽으면서 이게 철학책인지 기술서적인지 굉장히 혼란스웠다. 저자는 이상한 나라의 앨리스에서 나오는 등장인물을 통해 OOP에서 사용하는 개념인 캡슐화, 상속, 책임, 메세지와 같은 단어들의 개념을 하나씩 설명해준다. 물론 익숙한 이..

Paradigm/OOP-t 2021.06.25

[Design Pattern] 싱글톤 패턴(파이썬)

1. 싱글톤 패턴(Singleton Pattern)이란? 전역적으로 접근 가능한 하나의 객체만을 허용하는 패턴 즉 프로세스(?)내에 하나밖에 존재하지 않는 것을 보장해주는 패턴을 의미한다. 그럼 어떤 때 유용하게 사용할까? 싱글톤 패턴은 하나의 리소스에 대한 동시 요청의 충돌을 막기 위해 많이 사용된다 예로는 로그나 데이터베이스와 관련된 작업에 많이 사용된다. 싱글톤 디자인 패턴의 목적은 다음과 같다. 1. 클래스에 대한 단일 객체 생성 2. 전역 객체 3.공유된 리소스에 대한 동시접근 제어 2. 싱글톤 패턴 구현(Implementation of Singleton Pattern) class Singleton(object): """ Definition of Singleton Pattern """ def _..

Paradigm/OOP-t 2021.03.25