강의 35

[Computer Science/C++] Multiple Inheritance, Multi-Level Inheritance, Abstract Class, Friend Class

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Multiple InheritanceMultiple Inheritance란 하나의 derived class가여러 개의 base class를 상속받게 해주는 것이다  저번 시간과 동일하게 포켓몬으로(..)예시를 한 번 보자 전기속성을 띄는 포켓몬은 electricLevel이라는 attribute를불속성을 띄는 포켓몬은 flameLevel이라는 attribute를갖고 있다 따라서 ElectricPokemon이라는 클래스와FirePokemon이라는 클래스를 또 만들려고 한다 그럼 Pikachu는 포켓몬이자 전기속성을 띄는 포켓몬이므로BasePokemon class와 ElectricPokem..

[computer science] c++의 class와 inheritance(상속), class substitution, virtual function, dynamic binding

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에 정리해 볼 내용은c++에서의 class와 상속그리고 virtual function에 관한 내용이다  교수님께서 포켓몬을 이용한 ..예제를 들고오셨다 ㅋㅋ c++로 이런 귀여운 애들에 대한class를 만들어보자 각각의 attribute들과method들은 위와 같다  class design은 다음과 같다우선 Pokemon이라는 base class를 만든다base class에는name, hp, typed이라는 attributes가 있고attack, decreaseHp, getHp, getName이라는methods가 있다 그리고 Pokemon을 상속받은 class로Pikachu와..

[computer science] c++의 Copy/Move semantics, Static

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.파이썬으로 프로그래밍을 할 때아직 프로그래밍을 잘 모르던 시절 int_list = [1, 2, 3]new_int_list = int_listnew_int_list.append(4) 위와같이 프로그래밍을 해줬는데int_list에도 4가 append되어있어당황했던 기억이 있을 것이다 그래서 막 구글링을 하다보면new_int_list = copy.deepCopy(int_list)와 같이 해야하는데그 이유는 deep copy를 해야int_list의 요소들만 담은완전히 새로운 new_int_list가생성된다는걸 들어본적이 있을 것이다 프로그래밍을 공부하다보면call by valuecall by..

[computer science] c++의 operator overloading/연산자 구현하기 2편

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.operator overloading 2편! 시시시시작..  cout에서 자주 쓰이는 오른쪽의 object에 인자로 받은 값을append 시키는 기능을 한다 또한 tradition하게는Object 자기 자신을 반환하므로return값으로는 reference값input으로는 오른쪽의 object를 받아준다 그냥 현재 벡터에 내부적으로addElement를 해주는거고반환값으로는 append한자기 자신 reference를 반환해준다 그다음 또 하나 주목해야할게input에 const가 있는걸 확인할 수 있는데왜 const가 있을까? literal값을 받기 위해서다 input으로 변수가 아닌4, ..

[computer science] c++의 operator overloading/연산자 구현하기 1편

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다. 저번 시간에는 c++의 class 내부에서method를 구현하는 법을 배웠다면이번시간에는 class의 바깥에서method 구현하는 법을 정리해보려고한다 그리고 그와 함께operator overloading까지같이 정리해보려구한다 그럼 시작..!  Out-of-Class Definition  위 ppt의 코드를 잘 읽어보자SimpleVector라는 class 내부에 void addElement(T element);int getSize() const;와 같이 함수들이 정의되어있는데자세한 구현은 없이prototype만 정의되어 있는 것을 확인할 수 있다 실제 메소드들이 어떻게 작동하는지는..

[ComputerScience] c++의 Class와 Class Template

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는c++에서 ₩class와class template에 대해서배운 내용에 대해서 정의해보려고 한다 우선 c++의 개발자Bjarne Stroustrup의Why I created C++영상을 보면c++을 왜 만들었는지에 대한이야기가 나오는데c에는 없는 class의 개념을도입하기 위해서 만들었다고한다  Simula라는 언어에서class의 개념을 가져온 뒤c의 빠른 속도와 class의 개념을 결합시킨언어를 만들기 위해서c++을 개발했다고한다 c에서는 structure라는 개념이 있는데이를 c++에서 object의 개념으로 확장시켰다고한다  Classclass란 무엇일까 아마 객체지향..

[ComputerScience] c++의 function overloading

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는 c++에서함수를 다룰 수 있는 다양한 방법들과function overloading에서 대해서배운 내용을 정리해보려고한다 Default Arguments in Functions  우선 c++에서는 함수의 인자값를default로 설정할 수 있다 함수를 호출 할 때두 번째 인자값을 넘겨주면넘겨준 값으로 들어가지만아무것도 넘겨주지 않는다면default로 설정해둔 2가 들어가게 된다  Function OverloadingC에서는 같은 함수의 이름을여러 개 사용할 수 없었지만c++은 가능하다 이런걸 function overloading이라고 한다   이름이 같은 함수들을오른쪽과 같..

[ComputerScience] c++의 pointer와 reference 3편 (Call by Value, Call by Reference, Reference)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.c++에서의 Pointer와 Reference마지막 편 Call by ValueCall by Reference와마지막으로c++에서의 Reference에 대해정리해보도록하겠다  Call by Value  위 ppt의 코드를 잘보자mySwap이란 함수에서x와 y를 파라미터로 받고함수 내부에서 x와 y의 값을서로 바꿔준다 그런 다음 main함수에서int a와 b를 선언해준뒤mySwap 함수의파라미터로 넣어준뒤 a와 b를 출력해본다 mySwap 함수 내부에서는두 파라미터의 값을 서로 교환해주니main함수에서 정의된 a와 b를mySwap에 넣어주면a와 b의 값이 변할까? 정답은 변하지 않는다왜..

[ComputerScience] c++의 pointer와 reference 2편 (Dynamic Array, Static Array, Smart Pointers)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer와 reference는관련 내용이 깊고자세하게 설명해야할게 많아서나누다보니 3편까지 작성해야할 것 같다 1편에서는 pointer의 정의, 사용법,동적 메모리 할당 등에 대해서 배웠다 이버에는 포인터 변수를 이용해서동적으로 배열을 할당하고그걸 어떻게 이용하는지 알아보자  Dynamic Array  위 코드를 보면int *arr = new int[3]{1, 2, 3};이렇게 포인터 변수 arr를 동적으로 할당했다 위 코드가 무슨 뜻이냐하면어떤 메모리 주소에int가 3개 들어갈 수 있는공간을 할당하겠다는 뜻이다 new로 동적 할당이 끝나면arr는 첫번째 원소의 위치를 반환하게된..

[ComputerScience] c++의 pointer와 reference 1편 (포인터의 정의, 동적 메모리 할당, 포인터 연산)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번시간에는 c언어의 꽃이라고 할 수 있는포인터에 대해서 배운 내용을 정리해보려한다 포인터는 c언어의 꽃이지만강의 내용이 c++로 이루어지기에c++과 함께 포인터 변수에 대한 내용을 정리하고c++에만 있는 reference에 대해서도배운 내용을 정리해보려한다   c나 c++에서는 변수가 선언이 될 때그 변수를 위한 공간이 메모리에 생성이된다메모리에 특정 변수를 위한 공간이 생성이되면그 공간에 대한 정보인 주소가 존재할텐데이 주소를 변수의 이름과 associate를 해서변수 이름을 이용해 그 메모리 주소를찾아갈 수 있도록 하는 것이다이러한 것을 변수 선언이라고 부른다 위의 ppt에 있는..