전체 글

[Computer Science]/[객체지향설계]

[객체지향설계] 10/17 이론

오늘까지가 중간고사 범위 fuction overriding 부모 클래스의 함수를 자식 클래스가 오버라이딩 한다. 스태틱 디스패치와 다이나믹 디스패치 스태틱이라는 것은 컴파일 타임이 시작 전인 것이다. 어떤 함수를 사용할 것인지 컴파일러가 정해준다. 컴파일러가 아는 것은 타입밖에 모른다. 스태틱 캐스트. 캐스트를 사용하면 우리가 원하는 클래스의 함수를 불러올 수 있도록 한다. Developer 타입을 확인하고 Developer 타입의 함수를 호출하게 된다. 다이나믹 캐스트를 이용하자. Employee를 따라가서 Developer를 찾고, 각각의 함수가 원하는 함수로 발동되게 된다. 실습 때 한 게 이것이다. 만약에 디벨로퍼 리서쳐 말고 다른 하나의 타입을 클래스를 추가하고, 그 타입도 임플로이를 상속받는 ..

[Computer Science]/[시스템프로그래밍]

[시스템프로그래밍] Bomb Lab

시작 전에!gdb bomb 으로 bomb 실행 파일로 gdb를 실행하도록 한다.이후 (gdb) 이렇게 터미널 창에서 입력할 수 있게 되면제일 먼저!(gdb) b phase_1(gdb) b phase_2(gdb) b phase_3(gdb) b phase_4(gdb) b phase_5(gdb) b phase_6(gdb) b explode_bomb으로 explode_bomb이 실행되서 폭탄이 터지기 직전에 브레이크 포인트를 걸어준다. 만약 저게 실행 되었다면 k를 눌러서 프로그램을 종료 후 다시 시작하도록 한다. 시작은 (gdb) r 로 프로그램을 시작한다.Breakpoint 16, 0x0000000000401509 in explode_bomb ()(gdb) k꼭이다!!! 이제 Phase 1 이다.이제 실행을..

[Computer Science]

[기초프로젝트랩] 09/26 이론

보호되어 있는 글입니다.

[Computer Science]/[객체지향설계]

[객체지향설계] 09/26 이론

LHS and RHS 어싸인먼트가 왼쪽/ 오른쪽에 있는 것을 구분/ x=10 LHS : x RHS : 10 구분짓는 이유는 결과적으로 값이 할당되기 위해 존재-LHS / 값이 꺼내지기 위해 존해 RHS. z = x + y | x의 값을 꺼내고, y의 값을 꺼내고 둘을 더한 후 z에 값을 넣는다. 기본적으로 모든 변수는 주소값을 가지고 있다. 주소는 메모리 주소를 뜻한다. &는 해당 주소값을 계산하는 연산자. &x : 0 , &y : 4 x와 y의 주소값은 각각 0번과 4번 주소이다. x가 RHS에 있을 경우, x의 주소에 저장되어 있는 값을 꺼내온다. x가 LHS에 있을 경우, x의 주소에 값을 저장한다. 포인터 특정 변수 앞에 *을 찍는다. *는 따라간다. RHS에 *이 찍혀 있다면, *y라면 99의 ..

[Computer Science]/[객체지향설계]

[객체지향설계] 9/19 이론

Class Declaration 클래스 선언 문법. Object creation 객체 생성 암시적-명시적으로 생성할 수 있다. 문자열 인자만을 받는 객체라면 그냥 Car car = std::string("mycar") 도 가능하다. (암시적) Car car = (Car) "mycar"도 가능. (명시적) Access Modifier private 밖에서는 접근할 수 없는 나의 것. 객체만이 갖고 있는 것. protected private이 더 강력하다. 가족을 지킨다. 외부에는 공유하지 않지만 자식(child)에게는 줄 수 있다. - 상속에 관련함. public 누구나 접근할 수 있다. 일반적으로 간단하게 만든다면, 모든 멤버 펑션은 퍼블릭, 멤버 필드는 프라이빗. 외부에 공개/비공개를 구분. 실행하다 ..

[Computer Science]/[객체지향설계]

[객체지향설계] 9/12(화) 이론

c++의 역사 비아르네 스트로우스투루프가 창시. 처음에는 C언어의 확장판 개념으로 사용하게 되었다. 절차지향이던 C언어에 클래스/상속/... 이런 것들을 넣어서 언어를 확장했다. 1982년도에 C++로 이름이 바뀌었다. (이전에는 C with classes) 1985년도에 C++가 어떤 언어인지 배포되고, implementation(컴파일러)도 생겼다. C++ 디자인은 객체 지향 프로그래밍이라는 개념이 있다. C언어의 확장판이 C++인가? C언어의 Syntax가 매우 비슷하다. 어떻게 실행되는지도 유사하다.(Similar Sementics) 메모리 관리도 매우 비슷하다. 현재는 C의 확장이라고 보기에는 어렵다. 왜냐하면, C의 컴파일러로 컴파일 실행 했을 시 C++ 코드의 실행이 다를 수 있다. 컴파일러..

[Computer Science]/[시스템프로그래밍]

[시스템프로그래밍]9/7(목)

오리엔테이션 [전공 선택]이긴 하지만 다른 대학에서는 이 과목의 중요도가 높아지고 있다. 컴퓨터 구조와 연관성 높고, OS와도 연관성이 높다. 미국에서는 컴퓨터 구조, OS를 빼고, 시스템프로그래밍으로 한 번에 배우기도 한다. CMU에서 제일 인기 있는 과목. 이론과 실습의 중요도는 실습이 더 크다. 준비할 것이 많다. 이 과목의 주제 컴퓨터 프로그래밍은 추상화가 대부분이다. (ex: 자바 abstract type.. 자료구조.. 논리회로..) 스마트폰 앱 - 카카오톡, 인스타 : 이것들이 기기의 메모리, 램, cpu를 어떻게 사용하는지, wi-fi가 어떻게 작동하는지.. 몰라도 돼! 앱을 이용하기만 하면 된다.(추상화) 추상화의 한계. 앱을 사용하다가 먹통이 될 때, 느려질 때, 추상화에 가려진 원인을..

[Computer Science]/[객체지향설계]

[객체지향설계]9/4 오리엔테이션

Object Oriented Design(OOD) 객체 지향 프로그래밍과 디자인을 배우게 된다. 디자인 패턴. 조금 더 넓은 범위의 알고리즘. 어떻게 효율적으로 프로그래밍을 할 수 있는가. 효율이란 시간,공간 복잡도 뿐만 아닌 예술적으로 어떻게 예쁘고 간결하게 잘 짤 수 있는지 학습하게 된다. 이론 2시간, 실습 2시간 Per Week. 02분반. 이론 화요일, 실습 수요일. 프로그래밍 간단하게 짤 수 있어야 하며, C 언어를 잘 하면 좋다. 모든 실습은 리눅스 및 유닉스 환경에서 사용하게 된다. 카카오톡 오픈 채팅방을 이용. 학번+이름. 모든 공지는 오픈채팅방에서. 매 주 숙제가 나간다. 출석 10퍼, 과제 10퍼, 중간 기말 각각 30퍼. 5분부터 지각. 얼마나 늦어도 일단 수업 참석했으면 지각 처리..

DevCat_
고양이의 개발자국