1 / 26

Object Oriented Programming (FIT-II)

Object Oriented Programming (FIT-II). J. H. Wang Feb. 24, 2014. Instructor & TA. Instructor J. H. Wang ( 王正豪 ) Associate Professor, CSIE, NTUT Office: R1534, Technology Building E-mail: jhwang@csie.ntut.edu.tw Tel: ext. 4238 Office Hour: 9:00-12:00 am, every Tuesday and Thursday TA

Download Presentation

Object Oriented Programming (FIT-II)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object Oriented Programming (FIT-II) J. H. Wang Feb. 24, 2014

  2. Instructor & TA • Instructor • J. H. Wang (王正豪) • Associate Professor, CSIE, NTUT • Office: R1534, Technology Building • E-mail: jhwang@csie.ntut.edu.tw • 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

  3. 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 3rd or 4th 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, 3rd 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)

  4. 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

  5. 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

  6. 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

  7. (Tentative) Grading Policy • Homework and program assignments: ~40% • Quiz: ~10-15% • Midterm: ~20-25% • Final exam: ~25%

  8. 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

  9. 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

  10. 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, …

  11. 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 Orwell’s 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++ • …

  12. 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

  13. 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 • …

  14. 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, …

  15. 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 • …

  16. Examples (1/5) • Fibonacci numbers • Fn = Fn-1 + Fn-2 , n>=2F0 = 0, F1 = 1 • How to program? • (The following examples are adapted from Wikipedia.)

  17. Examples (2/5) • Functional: (Haskell) • fib 0 = 0fib 1 = 1fib n = fib (n-1) + fib (n-2) • Orfib first second = first : fib second (first+second)fibonacci = fib 0 1main = print (fibonacci !! 10)

  18. 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;}

  19. 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

  20. 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

  21. 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

  22. OOP: Why C++? • OO programming language: Why C++? • C++: general purpose programming language with a bias towards systems programming that [from Bjarne Stroustrup’s homepage] • Is a better C • Supports data abstraction, object-oriented programming, and generic programming • C++ has • Many users • Wide applications • Others: Smalltalk, Java, …

  23. 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, …

  24. 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

  25. 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, … • …

  26. Thanks for Your Attention!

More Related