|
課程摘要 |
第一週
2A:107/02/22(四)
2B:107/02/23(五)
INS101
|
- 課程簡介
(b&w), 1052
視訊紀錄: 1, 2), 課程大綱,
參考書籍, 線上資料
- 物件導向程式的核心概念: 物件,
抽象化, 界面,
封裝, 繼承,
多型
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B:1,2,3
- Homeworks:
|
第二週
2A:107/03/01(四)
2B:107/03/02(五)
|
- 學習目標和 C 程式設計, 資料結構, 演算法有一些差異:
希望能夠增進軟體系統的重用, 不要像免洗餐具一樣即用即丟, 希望能夠不斷地透過物件的組合來產生新的軟體: 解線性方程式範例
(b&w),
coder vs. programmer
- Abstract
Data Type (b&w,
1052
視訊紀錄): [Data Type + Operation] common part which
is independent of all implementations
-
C++ Console I/O (b&w,
1052 視訊紀錄:1,2,3):
an object oriented I/O library
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2,3,4
- Homeworks:
|
第三週
2A:107/03/08(四)
2B:107/03/09(五) |
- Making
and Using Objects (b&w,
1052 視訊紀錄:1,2)
-
A "Better" C Program (b&w),
codes
- Objects
and Classes (b&w,
1052 視訊紀錄:1,2,3)
- 本週視訊紀錄:1062 2A:1,2,3,4
1062 2B: 1,2,3,4
- Homeworks:
|
第四週
2A:107/03/15(四)
2B:107/03/16(五) |
- Objects
and Classes (b&w)
(cont'd)
- C++
as a better C (b&w,
1052 視訊紀錄:1,2,3)
:
- single line comment
- struct, enum, union tags
are type names
- new iostream library (object
oriented usage, type sensitive usage)
- cooperating with stdio (ios::sync_with_stdio())
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
- read Chapter 3, 4
- scanf
的進階用法 (b&w,
1052 視訊紀錄:1)
- testScanfReg1.cpp
- Google
C++ style guide, local
copy
- Common
C Programming Errors, local
copy
- Common
C++ Programming Errors , 2nd
link, local
copy
- How
to Debug Programs, local
copy
- Assertion
(b&w)
- detecting
memory leakage, local
copy, src1, src2,
src3
- 本週 (2A:
107/03/15 星期四
21:00, 2B: 107/03/16
星期五 21:00) 繳交 作業一
|
第五週
2A:107/03/22(四)
2B:107/03/23(五) |
- C++
as a better C (b&w,
1052 視訊紀錄:1,2,3)
:
- variable declaration on the
fly
- definition vs. declaration
(variable and function)
- function signature and name
mangling
- parameter defaults
- #define vs. const variables
- new and delete
- stricter typing system
- typedef
- reference
(b&w)
- global scope resolution operator
- bool
- explicit
type conversion
- Dynamic
allocation of 2-dimensional array in C (b&w)
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2
- Homeworks:
|
第六週
2A:107/03/29(四)
2B:107/03/30(五) |
- Procedural Programming Example
6Balls
- Object Oriented Programming
Example 3Bags
Example (b&w,
1052 視訊紀錄:1),
codes
- Constructors
and Destructors (b&w,
1052 視訊紀錄:1,2)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
|
第七週
2A:107/04/05(四)
2B:107/04/06(五) |
spring break
下星期 (2A: 107/04/12
星期四 21:00, 2B: 107/04/13
星期五 21:00) 繳交 作業二
|
第八週
2A:107/04/12(四)
2B:107/04/13(五) |
- More
Classes (b&w,
1052 視訊紀錄:1,2)
(Object composition and ctor, this pointer, return pointers)
- The
Big Three: Dtor, Copy Ctor, and Assignment Operator (b&w,
1052 視訊紀錄:1,2,3)
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2,3
- Homeworks:
|
第九週
107/04/19(四)
|
期中考, ClosedBook
2A: 18:40-21:00, 教室分配表,
INS101 / INS B01
2B: 18:40-21:00, 教室分配表,
INS105 / INS B03
請提早 10 分鐘到教室找你的座位
|
第十週
2A:107/04/19(四)
2B:107/04/27(五) |
- 期中考講解,
成績分佈 2A, 2B
-
Friend Classes and Friend Functions (b&w,
1052 視訊紀錄: 1)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
|
第十一週
2A:107/05/03(四)
2B:107/05/04(五) |
- Basic
Object Design (b&w,
1052 視訊紀錄: 1)
- More
Object Design (b&w,
1052 視訊紀錄: 1)
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2
- Homeworks:
|
第十二週
2A:107/05/10(四)
2B:107/05/11(五) |
- More
Object Design (b&w)
(cont'd)
-
Operator Overloading (b&w,
1052 視訊紀錄:1,2)
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2,3
- Homeworks:
- read Chapter 12 operator overloading
- 下星期四
(2A: 107/05/17
星期四 21:00, 2B:
107/05/18 星期五
21:00)
繳交 作業三
- 三星期後 (2A:
107/05/31 星期四
21:00, 2B: 107/06/01
星期五 21:00) 繳交 作業四
|
第十三週
2A:107/05/17(四)
2B:107/05/18(五) |
- Operator
Overloading (b&w)
(cont'd)
- Inheritance
(b&w, 1052
視訊紀錄:1,2,3)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1
- Homeworks:
|
第十四週
2A:107/05/24(四)
2B:107/05/25(五) |
- Inheritance
(b&w) (cont'd)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
|
第十五週
2A:107/05/31(四)
2B:107/06/01(五) |
- Polymorphism
(b&w, 1052
視訊紀錄:1,2,3)
-
Advanced Inheritance (b&w,
1052 視訊紀錄: 1)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
- review Chapter 14 Inheritance
and Composition
- review Chapter 15
Polymorphism and Virtual Functions
- read Vol. 2, Chapter 6 Multiple inheritance
- 本週 (2A:
107/05/31 星期四
21:00, 2B: 107/06/01
星期五 21:00) 繳交 作業四
|
第十六週
2A:107/06/07(四)
2B:107/06/08(五) |
- Hiding
& Overriding Examples (b&w,
1052 視訊紀錄: 1)
- Generic
Programming (b&w,
1052 視訊紀錄:1,2)
- 本週視訊紀錄:1062 2A:1,2
1062 2B: 1,2
- Homeworks:
|
第十七週
2A:107/06/14(四)
2B:107/06/15(五) |
- Exception
(b&w, 1052 視訊紀錄:
1)
- Object
Oriented Design Smells and SOLID Principles (b&w,
1052 視訊紀錄: 1)
這些都是教你如何運用繼承來應付需求的改變, 繼承的語法簡單, 但是錯誤的使用繼承會造成極大的負面效果, 那就不要用吧!! 可是不用它的話,
OOP 不只是跛腳, 根本就斷頭了....
- C++
11 (b&w)
- 本週視訊紀錄:1062 2A:1,2,3
1062 2B: 1,2,3
- Homeworks:
- read Vol. 2, Chapter 7 Exception handling
- State
Diagram (b&w)
- 繼承不是萬靈丹 - Strategy vs. Template
method, Direct Inheritance vs. Decorator
- UML
語法介紹 (b&w),
參考資料, UML
簡介
- "An
Open Letter to Object Technology Newcomers", Alistair Cockburn
(local
copy)
- C++11,
FAQ, tutorial
1 by Allain,
tutorial 2 by Kalev, rvalue
reference, Thread,
Smart pointers,
C++11
和快速迭代式開發
- 982期末考,
992期末考, 1002期末考,
1012期末考,
1022期末考,
1032期末考,
1042期末考, 1052期末考
請注意: 僅供參考, 每學期上課的內容有相當的調整, 每學期的作業內容也有相當的調整
|
第十八週
107/06/21(四) |
期末考, ClosedBook
2A: 18:40-21:00, 教室分配表, INS101
/ INS B01
2B: 18:40-21:00, 教室分配表, INS105
/ INS B03
請提早 10 分鐘到教室找你的座位
查詢自己的期末考考卷與成績 (請至作業欄選取期末考)
參考答案,
成績分佈
尾聲
|
|
C++ sucks because
you will get C back.
唉呀呀! (C++ 的笑話不太多, 看得懂這個笑話的同學需要瞭解 postfix 的 operator++(int),
需要知道它只是暫時的數值, 所以當 learning = C++; 時, 顯然 learning 變數裡得到的和 learning
= C; 是一樣的) 難怪很多同學辛苦地磨了一個學期還是只得到 C, 包括成績還有寫出來的程式都是, 名字一開始就取錯了嘛, 改名叫做
++C 或是 B 的話, 至少會學到一點和 C 不一樣的東西, 叫做 ++++C 的話 (那不就是 A 了), 說不定大家都輕鬆地學會了
XD (咦, prefix 的 operator++() 有 lvalue? 是耶, 只有 prefix 的有 lvalue)
|