Concepts in C++ Games Audio Programming Lecture 1 About the module Lectures/Tutorials The Assessment Assignment Language introduction Module Text Deitel, H.M. & Deitel, P.J. (2003) C++ How to program, Prentice Hall, U.S. ISBN 0-13-111881-1 Liberty, J. & Horvath, D.B. (2005) Teach Yourself C++ in 24 Hours, Sams, USA. ISBN 0-672-32681-7 Overland, B. (2005) C++ Without Fear Prenctice Hall, USA. ISBN 0-321-24695-0 Module Text for C++ If available – second hand? Graham, N (1991) Learning C++ McGraw Hill, USA. ISBN 0-07-100849-7 Eckle, B. (2000) Thinking in C++ (Volume 1) Eckle, B. (2003) Thinking in C++ (Volume 2) Both available as free download http://www.mindview.net/Books/TICPP/ThinkingInCPP 2e.html Vol 1 – 867KB; Vol 2 – 991KB Module Schedule Availability Blackboard Available beyond University Network Integrated Development Environment (IDE) Using Microsoft Visual Studio.NET Strictly C++ Initial User Guide on Blackboard Self discovery also required Other IDE may be used – Borland, UNIX/Linux, Command Line) as long as strictly C++ Should run on University computers though may use Notepads / Laptops. using namespace std; bool Class – Specifying the access Class – default will not allow access Access Specifiers private: public: protected: default allows external access restricted external access Concentrate on public & private for now. protected covered in later lecture Constructor usage Initialisation parameters added to code e.g. int main(void) { Account Tom(250.00, 5.3); } Tom’s account will be instantiated with… An opening balance of £250.00 An opening interest rate of 5.3% and Using a prototype #include <iostream> using namespace std; void function1(bool val); void function2(bool val); function prototypes or declarations int main() { function1(true); function2(true); } void function2(bool val) { cout << "This is function 2" << endl; if (val) function1(!val); } void function1(bool val) { cout << "This is function 1" << endl; if (val) function2(!val); } function definitions Header files when developing larger programs, it is useful to put the prototypes in a separate header file suffix .h, for example MyFunctions.h any program file that uses these functions can include the header file #include “MyFunctions.h” this enables the compiler to check the parameters and return type of any functions called are correct without needing to access the function definitions header files can also contain constants, enums, structures and class declarations the use of header files allows the same declarations to be used in many .cpp files Guarding against multiple inclusions functions can be declared multiple times in the same source file but defined only once prototypes repeated method body structures, enums and classes can be declared only once it's easy to include the header file twice in the same source file guard against this by using conditional definition or pragma Account.h #ifndef ACCOUNT_H #define ACCOUNT_H class Account { private: double balance; double interestRate; public: Account(double initialBalance, double rate); double getBalance(); void deposit(double amount); void withdraw(double amount); void addInterest(); }; #endif #include "account.h" account.cpp Account::Account(double initialBalance, double rate) : balance(initialBalance), interestRate(rate) { } double Account::getBalance(){return balance;} void Account::deposit(double amount) { balance += amount; } void Account::withdraw(double amount) { // implement this method yourself } void Account::addInterest() { balance *= (1 + interestRate/100.0); }