OOps C++ Good Document To Study
OOps C++ Good Document To Study
(FIT-II)
J. H. Wang
Feb. 24, 2014
Instructor & TA
Instructor
J. H. Wang ()
Associate Professor, CSIE, NTUT
Office: R1534, Technology Building
E-mail: [email protected]
Tel: ext. 4238
Office Hour: 9:00-12:00 am, every Tuesday and
Thursday
TA
Miss Liu (at R1424, Technology Building)
Available time: 13:00-15:00pm, every Monday, Tuesday, or
Friday
Course Overview
Course: Object Oriented Programming (FIT-II)
Time: 9:10-12:00am, Monday
Place: R413, Network Center
Textbook: Absolute C++, 5th edition, by Walter Savitch and Kenrick
Mock, Addison-Wesley, 2012. ()
The 3
rd
or 4
th
edition is also acceptable (with minor changes)
References:
A good blog for OOP, by Prof. Y. C. Cheng (in Chinese)
C++ Primer, 5th edition, by Stanley B. Lippman, Josee Lajoie, and
Barbara E. Moo, Addison-Wesley, 2012.
C++ How to Program, 8th edition, by Harvey Deitel and Paul Deitel,
Prentice Hall, 2012.
The C++ Programming Language, 3
rd
edition, by Bjarne Stroustrup,
Addison-Wesley, 1997.
Prerequisites:
Basic computer skills (FIT-I basic)
Working knowledge of high-level programming languages such as C
(FIT-I pro)
Target Students
For those who
Might NOT major in CSIE but are interested in
programming techniques, and
Have accomplished the courses in software
engineering track: FIT-I basic & FIT-I pro, and
Are willing to prepare for intermediate and
advanced software engineering courses
Emphases of Teaching
Basic concepts of the object-oriented
programming paradigm
Hands-on experience of C++ programming
skills
Introduction to problem solving techniques,
basic data structures and algorithm design
Teaching
Lectures
Quiz
About 2 quizzes
During the first month
Homework and program assignments
About 5 assignments
Homework should be turned in within two
weeks
Mid-term and final exam
(Tentative) Grading Policy
Homework and program assignments:
~40%
Quiz: ~10-15%
Midterm: ~20-25%
Final exam: ~25%
Goal
Introducing object-oriented programming
concepts
Fundamental constructs in OOP with C++
Practicing programming skills
Basic concepts: encapsulation, polymorphism,
Preparing for advanced courses
Application software design & object-oriented problem
solving
Software engineering & project management
Tentative Schedule
Organization of the textbook
Review of computer programming (3-4 wks)
Overview of Object Oriented Programming
Ch. 1-5: programs, functions, parameters, flow of control,
arrays, structures
OOP (focus) (10-12 wks)
Ch. 6-8: classes, constructors, friends, references
Ch. 9, 10, 12: More constructs: strings, pointers and dynamic
arrays, streams and file I/O
Ch.14: Inheritance
Ch.15: Polymorphism
Generic programming (optional) (2 wks)
Ch. 16: templates
Ch. 17: Standard Template Library
Tentative Schedule (Cont)
Schedule
Basically, 1 or 2 weeks per chapter
The tentative schedule is subject to changes based on the
learning status
Course Web Page:
http://www.ntut.edu.tw/~jhwang/OOP/
Please check the latest announcements, homeworks,
exams,
Program Development
Environment
Free C++ Development Environments
GCC on Linux/UNIX servers (ntut.edu.tw)
Not friendly for beginners
Windows-based
Dev C++ (http://www.bloodshed.net/devcpp.html): not maintained
For further development, please check Orwells Engine
(http://orwellengine.blogspot.com/ )
Other choices: wxDev-C++ by Colin Laplace et. al.
Cygwin (http://www.cygwin.com/): UNIX-like emulation on Windows
MinGW (http://www.mingw.org/)
Commercial tools
Microsoft Visual C++
Borland C++
Homework Submission
Online submission instructions
Programs and homeworks in electronic files must be
submitted to the TA online at:
Submission site: (TBD)
Before submission:
User name: Your student ID
Please change your default password at your first login
If the submission website fails, the NTUT
Network Campus might be used for homework
submission
Programming Paradigms
Low-level vs. high-level programming
languages relative
Machine vs. human
Styles of computer programming
Procedural programming
Object-oriented programming
Functional programming
Logic programming
Low-level vs. High-level
Programming Languages
Low-level:
Machine code
Assembly
High-level: (abstraction from the computer
details)
Basic, C, Java, Pascal, C++, Perl, Python,
Styles of Computer Programming
Procedural programming
Imperative: procedures, routines, subroutines,
methods, or functions
Object-oriented programming
Functional programming
Mathematical functions
E.g. Lisp, Erlang, Haskell,
Logic programming
Logic: facts, rules
E.g. Prolog
Examples (1/5)
Fibonacci numbers
F
n
= F
n-1
+ F
n-2
, n>=2
F
0
= 0, F
1
= 1
How to program?
(The following examples are adapted from
Wikipedia.)
Examples (2/5)
Functional: (Haskell)
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Or
fib first second = first : fib second
(first+second)
fibonacci = fib 0 1
main = print (fibonacci !! 10)
Examples (3/5)
Procedural: (C)
int fib(int n)
{
int first = 0, second = 1;
for (int i=0, i<n; i++)
{
int sum = first+second;
first = second;
second = sum;
}
return first;
}
Examples (4/5)
Assembly: (in x86 using MASM syntax)
mov edx, [esp+8]
cmp edx, 0
ja @f
mov eax, 0
ret
@@: cmp edx, 2
ja @f
mov eax, 1
ret
@@: push ebx
mov ebx, 1
mov ecx, 1
@@: lea eax, [ebx+ecx]
cmp edx, 3
jbe @f
mov ebx, ecx
mov ecx, eax
dec edx
jmp @b
@@: pop ebx
ret
Examples (5/5)
Machine code: (a function in 32-bit x86)
8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3
OOP: Basic Concepts
Encapsulation
Object
Instance of class
Members
Attributes
Methods
Abstraction
Composition
E.g.: car
Inheritance
E.g.: Lassie the Dog, a Collie
Polymorphism
Many meanings for one function
OOP: Why C++?
OO programming language: Why C++?
C++: general purpose programming language with a
bias towards systems programming that [from Bjarne
Stroustrups homepage]
Is a better C
Supports data abstraction, object-oriented programming, and
generic programming
C++ has
Many users
Wide applications
Others: Smalltalk, Java,
Some Comparisons
Three parts in C++
Low-level language: largely inherited from C
Data types, flow of control, functions, arrays,
pointers,
Advanced language features: to define our
own data types (major difference)
Class, inheritance, polymorphism, template,
exception,
Standard library: some useful data structures
and algorithms
Containers, iterators,
Differences among some textbooks
C++ How to Program: early objects
approach
late objects approach also available
C++ Primer: early objects, covering basics
and library together
Absolute C++: intermediate
The C++ Programming Language: The Bible,
as a reference
How to Prepare Yourself?
Practice, practice, practice
Exercises on textbooks and reference books
Online resources: programming exercises,
forums,
Programming contests
ACM ICPC (International Collegiate Programming
Contest)
IOI (International Olympiad in Informatics)
Domestic: e-tutor,
Thanks for Your Attention!