• Non ci sono risultati.

Introduction to C++

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduction to C++"

Copied!
15
0
0

Testo completo

(1)

Introduction to C++

Giuseppe Lipari

http://retis.sssup.it/~lipari

Scuola Superiore Sant’Anna – Pisa

April 27, 2009

(2)

Outline

1

Summary of the course

(3)

Course content

This course will cover advanced programming concepts with C/C++ language. It is divided in three parts:

Part 1:

Intro to programming and software engineering Recollection of C++ basics

Classes, Inheritance Templates

The Standard Templates Library Part 2: Patterns

Basic Patterns Singleton, Composite

Abstract factory, Prototype, Builder Visitor, Adaptor, Observer

Parte 3: Advanced Libraries and tools Overview of the Boost Library Unit testing with CPPUNIT Autotools

Metaprogramming techniques

(4)

Books and material

Books on C++

Stroustup (Language reference) Bruce Eckel (Basic of C++) Exceptional C++ (Tips and Tricks) Modern C++ programming Books on patterns

Design Patterns Extreme Programming Web resources

STL reference Boost library Guru of the week Slides

Part of the slides are courtesy of Alex Liu (Associate Professor at Michigan State University MSU)

alexliu@cs.msu.edu

(5)

Exam

The class can bedivided in groups of 2-3 students each During the course, I will give some assignments. The assignment can be done (at least partially) during the lab lectures.

The assignments may be fragments (i.e. modules, classes) where I will ask you to apply some of the techniques studied during the course

At the end, each group will produce a part of a program, and we will try to integrate everything to realize one single program.

Grading:

50% will be on the intermediate assignments 40% on the final project

10% will be on the integration

(6)

How to become a good software designer

How to become a software design master?

Engineering approach Lot of experience

Learning to develop good software is similar to learning to

play good chess

(7)

How to become a chess master

First, learn the rules

e.g., names of pieces, legal movements,

captures, board geometry, etc.

(8)

How to become a chess master

First, learn the rules

e.g., names of pieces, legal movements, captures, board geometry, etc.

Second, learn the principles

e.g., relative value of certain pieces, power of a threat, etc.

But principles are abstract. How to apply

them in practice?

(9)

How to become a chess master

First, learn the rules

e.g., names of pieces, legal movements, captures, board geometry, etc.

Second, learn the principles

e.g., relative value of certain pieces, power of a threat, etc.

But principles are abstract. How to apply them in practice?

Third, learn the patterns by studying games of other masters

These games have certain patterns that

must be understood, memorized, and

applied repeatedly until they become

second nature.

(10)

To become a software design master

First, learn the rules

e.g., programming languages, data structures, etc.

(11)

To become a software design master

First, learn the rules

e.g., programming languages, data structures, etc.

Second, learn the principles

e.g., software engineering principles such as separation of concerns, etc.

But principles are abstract. How to apply them in practice?

(12)

To become a software design master

First, learn the rules

e.g., programming languages, data structures, etc.

Second, learn the principles

e.g., software engineering principles such as separation of concerns, etc.

But principles are abstract. How to apply them in practice?

Third, learn the patterns by studying designs of other masters

These designs have certain patterns that must be

understood, memorized, and applied repeatedly until they

become second nature.

(13)

To become a software design master

First, learn the rules

e.g., programming languages, data structures, etc.

Second, learn the principles

e.g., software engineering principles such as separation of concerns, etc.

But principles are abstract. How to apply them in practice?

Third, learn the patterns by studying designs of other masters

These designs have certain patterns that must be

understood, memorized, and applied repeatedly until they

become second nature.

(14)

To become a software design master

First, learn the rules

e.g., programming languages, data structures, etc.

Second, learn the principles

e.g., software engineering principles such as separation of concerns, etc.

But principles are abstract. How to apply them in practice?

Third, learn the patterns by studying designs of other masters

These designs have certain patterns that must be

understood, memorized, and applied repeatedly until they

become second nature.

(15)

Organization of the course

Review of C++ syntax (learn the rules)

C++ programming techniques and Software Tools (learn the principles)

Object Oriented Design Patterns (learn the patterns)

Riferimenti

Documenti correlati

T.officinalis and R. However, we did not find any reference on the effect of air drying on volatile composition of these two species cultivated in Sardinia. Consequently, the aim

from oldest to youngest, consists of a specific subset of the nine identified facies associations as a function of preserved depositional systems and systems tracts. Typically,

In order to perform the investigation on the RTD fluctuations the mixer was divided along the axial direction into six identical portions. In this way six bins to be used as

These games have certain patterns that must be understood, memorized, and applied repeatedly until they become second nature... To become a software

The idea of patterns has a general meaning and a general application: from architecture to software design!...

declares an interface for operations that create abstract product objects. ConcreteFactory (MotifWidgetFactory, PMWidgetFactory) implements the operations to create concrete

protected: only member functions of the same class or of derived classes can access it: other classes or global functions can’t public: every function can access it. class MyClass

protected: only member functions of the same class or of derived classes can access it: other classes or global functions can’t public: every function can access it. class MyClass