객체지향 프로그래밍

포스터 하나로 상속개념 간파하기

본 포스트는 직접 미션을 구현해가며 객체지향 프로그래밍의 개념을 익히고자 만들었습니다. 기반 언어는 python 입니다. 포스트를 시작하기 앞서 python에서 상속 기능을 어떻게 수행할 수 있는지 기초 개념을 잡고자 한다. 클래스 변수, 인스턴스 변수 개념부터 잡고 가는것이 좋다. class Account: num_accounts = 0 def __init__(self, name): self.name = name Account.num_accounts += 1 def __del__(self): Account.num_accounts -...

Read more

다형성을 이용해 Generic한 클래스 구성하기

클래스 다형성의 필요성을 알아볼 것임 아래와 같이 추상 인터페이스와, 그를 활용해 구현한 PathInputData, LineConterWorker 두 클래스가 있음 이해를 위해 필요한 개념 다형성(Polymophism) 하나의 객체(Object)가 여러가지 타입을 가질 수 있는 것 구현 방법 오버로딩 메소드 이름을 같게 매개변수의 개수 또는 타입을 다르게 오버라이딩 (상속이 선...

Read more

클래스 기초

클래스 이해를 위해 필요한 단어 Class 데이터와 기능(함수)을 묶어놓은 객체 Instance 클래스에 의해 만들어진 객체 Attribute 클래스 내부에 포함되어있는 함수나 변수를 의미 Method (3가지 타입을 가짐) 인스턴스 메서드 인스턴스 변수에 접근할 수 있도록 첫 번째 인자에 항상 객체 자신을 의미하는 self 파라미터를 갖음 정적 메서드 ...

Read more

클래스를 활용한 코드 리팩토링

클래스가 필요한 순간 dict 에 dict을 저장해야 구현 가능하다고 느끼는 순간 클래스로 나누는것이 필요하다 아래 예시를 통해 어떻게 그런 순간을 맞닥뜨리는지 보자 class SimpleGradebook: def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = [] def report_grade(self, name, score): self._grades[name].append(score) def average_grad...

Read more

객체지향 프로그래밍이란

학생들이 교실청소를 분업해서 진행해야 하는 상황 가정 진행해야 하는 작업은 총 3가지 (바닥쓸기, 창문닦이, 칠판닦이) 아래로 내려갈수록 점점 코드가 발전하는(체계화되는) 방식 절차지향 프로그래밍 학생 한명 한명에게 명령어를 직접 쳐서 바닥쓸기, 창문닦이, 칠판닦이를 시킴 같은 작업인데도 지정하는 학생이 달라질 때 마다 코드를 똑같이 다시 쳐야하기 때문에 중복이 심함 반복문으로 중복코드를 조금 없앰 학생을 인자로 받을 수 있는 함수에 2에서 활용한 반복문까지 써서 중복 코드 줄임 여전히 중복이 많음 여기 3번까지가 절차지향 프로그래밍 ...

Read more