전체 글
-
클래스 - 메서드 오버라이딩과 다형성python 2021. 3. 11. 23:33
다형성(polymorphism)이란 '상속 관계에 있는 다양한 클래스의 객체에서 같은 이름의 메서드를 호출할 때, 각 객체가 서로 다르게 구현된 메서드를 호출함으로써 서로 다른 행동(behavior), 기능, 결과를 가져오는 것'을 의미한다. 그리고 이를 구현하기 위해 파생 클래스(derived class) 안에서 상속받은 메서드를 다시 구현하는 것을 메서드 오버라이딩(method overriding)이라고 한다. 메서드 오버라이딩 #code 1-1 class CarOwner: def __init__(self, name): self.name = name def concentrate(self): print("{0} can not do anything else".format(self.name)) #나머지 메..
-
클래스 - 클래스 관계python 2021. 3. 11. 23:30
1.클래스 관계 IS-A IS-A는 '~은 ~의 한 종류다'라는 의미다. 예를 들어 '노트북은 컴퓨터의 한 종류다'라는 문장은 관계가 성립하므로 Computer 클래스와 Laptop 클래스는 IS-A 관계다. 영어로는 'A laptop IS-A computer'인데 '한 종류다'라는 의미가 IS-A이므로 IS-A 관계라고 부른다. IS-A 관계를 프로그램에서 표현할 때는 상속(inheritance)을 사용한다. 상속은 객체 지향의 근간이라고 불릴 만큼 중요하며 유용하다. 하지만 IS-A 관계가 아닐 때 상속을 하면 클래스를 설계하는 데 어려움이 따른다. 상속 관계에서 상속을 하는 클래스를 기본(base)클래스, 부모(parent)클래스, 슈퍼(super)클래스라고 하며 상속을 받는 클래스를 파생(deri..
-
Git - branch & conflictGit Github 2021. 3. 8. 14:16
브랜치 소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룬다. 동일한 코드 위에서 버그를 수정하기도 하고 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 다른 작업을 할 때에는 서로 다른 버전의 코드가 만들어 질 수 밖에 없다. 이런 상황에서, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 Branch다. 각자 독립적인 작업 영역(저장소) 안에서 다른 브랜치의 영향을 받지 않고 소스코드를 변경할 수 있다. 여러 작업을 동시에 진행할 수 있고 새로운 버전을 만들어 낼 수 있으며, 다른 브랜치와 병합(Merge)함으로써, 하나의 브랜치로 모을 수도 있다. 브랜치 생성 저장소를 처음 만들면 Git은 master라는 이름의 브랜치를..
-
Git 버전관리Git Github 2021. 3. 5. 21:36
git init . : 현재 디렉토리를 깃에게 버전관리를 시키도록 명령 (init : initialize, 초기화) hello-git-cli 폴더안에 있는 .git(repository)폴더에서 버전관리를 한다. Working tree는 작업(파일 생성, 수정)을 하는 공간이고, 버전으로 만들어지기 전 단계다. \ 버전을 만들기 위해서는 파일을 Working tree에서 Staging Area로 옮겨야 한다. \ Staging Area에서 Repository로 옮기면 버전이 저장된다. git staus : 폴더의 현재 상태를 확인할 수 있다. No commits yet... : 아직 커밋이 안됐다는 것을 알 수 있다. Untracked files.... : Working tree에 들어있는 파일들의 목록을..
-
객체 지향 프로그래밍python 2021. 3. 5. 16:13
'이 프로그램이 무슨 일을 하는가?'에 대한 답을 알려 준 절차 지향과 달리 객체 지향은 '현실 세계에 존재하는 객체(object)를 어떻게 모델링(modeling)할 것인가?'에 대한 물음에서 시작된다. 캡슐화 주변을 둘러보면 모든 사물이 저마다 특성이 있다는 것을 알 수 있다. 그 특성을 기준으로 객체들을 분류하거나 계층을 만들 수 있다. 필자는 '사람'이라는 계층(클래스)에 속한다. 모든 사람이 같은 특성을 갖고 있지만, 그 특성의 값은 다르다. 예를 들면 키, 나이, 몸무개, 성별, 인종은 모든 사람이 가지는 특성이지만, 그 값은 사람마다 다르다. 특성 값 하나하나가 모여 '나'라는 '객체'를 완성하는 것이다. 또한 사람은 '잠자기', '숨쉬기', '먹기' 같은 행동을 할 수 있다. 이처럼 객체는..
-
POSIX CLIGit Github 2021. 3. 4. 22:12
Portable Operating SystemIinterface POSIX는 이식 가능 운영 체제 인터페이스의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격이다. CLI의 장점? -GUI보다 직접적인 접근으로 통제가 용이하다. (정밀도도 더 높다) -GUI보다 CPU와 MEMORY를 적게 사용한다. -여러가지 작업을 다중 실행시 용이하다. 이용의 목적 File Directory Create editor mkdir Read editor, cat, ls ls Update editor, mv mv Delete rm rm 디렉토리의 사용 pwd : 현재 내 위치를 알려준다. (기본적으로 내가 ..
-
파이썬 - 절차지향 프로그래밍python 2021. 3. 4. 17:46
프로그래밍을 배우다 보면 절차 지향 프로그래밍(procedural programming)이나 객체 지향 프로그래밍(object-orient-programming) 혹은 함수형 프로그래밍(functional programming) 같은 다양한 용어를 만난다. 이들 모두 프로그래밍 패러다임의 한 종류다. 패러다임이란 어떤 사물을 바라보는 사고의 틀이나 체계를 말한다. 그렇다면 프로그래밍 패러다임이란 프로그래밍을 어떻게 바라볼 것인지, 어떻게 프로그래밍할 것인지에 대한 인식이나 체계라고 말할 수 있다. 절차 지향 프로그래밍 절차를 의미하는 procedure은 서브 루틴, 메서드, 함수라고도 불린다. 함수라는 용어가 익숙하니 절차 대신 함수라는 단어를 사용한다. 함수는 입력을 받아 일련의 연산 과정을 거쳐 출력..
-
함수python 2021. 3. 3. 21:34
프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성하고 있는 자신을 발견할 때가 종종 있다. 이때가 바로 함수가 필요한 때이다. 즉 반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다"라는 식의 함수로 작성하는 것이 현명하다. 함수를 사용하는 또 다른 이유는 자신이 만든 프로그램을 함수화하면 프로그램 흐름을 일목요연하게 볼 수 있기 때문이다. 마치 공장에서 원재료가 여러 공정을 거쳐 하나의 상품이 되는 것처럼 프로그램에서도 입력한 값이 여러 함수를 거치면서 원하는 결괏값을 내는 것을 볼 수 있다. 이렇게 되면 프로그램 흐름도 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다. 함수를 잘 사용하고 함수를 ..