Modern C++ in practice.

Slides:



Advertisements
Similar presentations
Boost Writing better code faster with Boost. Boost Introduction Collection of C++ libraries Boost includes 52 libraries, 1.31 will have at least.
Advertisements

Understand and appreciate Object Oriented Programming (OOP) Objects are self-contained modules or subroutines that contain data as well as the functions.
CSE 332: C++ overview CSE 332 Overview and Structure CSE 332 emphasizes studio-based active learning –Introductory lecture material followed by hands-on.
Everyone loves Fortran. 1. Deprecate mpif.h Fortran refresher Two Fortran interfaces for each MPI function Available in three different bindings Integer.
Programming Paradigms and languages
Towards a Practical Composition Language Oscar Nierstrasz Software Composition Group University of Bern.
Object Oriented Programming Elhanan Borenstein Lecture #12 copyrights © Elhanan Borenstein.
Keith Wiles DPACC vNF Overview and Proposed methods Keith Wiles – v0.5.
Chapter 3.2 C++, Java, and Scripting Languages. 2 C++ C used to be the most popular language for games Today, C++ is the language of choice for game development.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
Inheritance, Method Overloading, Interfaces, Abstract Classes Game Design Experience Professor Jim Whitehead January 28, 2009 Creative Commons Attribution.
C++ Training Datascope Lawrence D’Antonio Lecture 3 An Overview of C++
Scott Grissom, copyright 2004Ch 3: Java Features Slide 1 Why Java? It is object-oriented provides many ready to use classes platform independent modern.
C# Programming: From Problem Analysis to Program Design1 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.
Chapter 3.2 C++, Java, and Scripting Languages hacked by jeffery.
Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated.
Who am I? ● Catalin Comanici ● QA for 10 years, doing test automation for about 6 years ● fun guy and rock star wannabe.
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Platforms for Learning in Computer Science July 28, 2005.
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 332: C++ templates This Week C++ Templates –Another form of polymorphism (interface based) –Let you plug different types into reusable code Assigned.
Reactive Extensions Ye olde introduction and walk-through, with plenty o’ code.
02/10/2015 Page 1 R. Theeuws Siemens Atea Filename: CBD_ervaring Werkgroep Component Based Developments Ervaring CBD.
“A labor of love” (Multicast Pattern) Chapter 4 (pages or ) Chris Gordon.
PRESENTED BY: RAJKRISHNADEEPAK.VUYYURU SWAMYCHANDAN.DONDAPATI VINESHKUMARREDDY.LANKA RAJSEKHARTIRUMALA KANDURI ALAN.
Generic Programming Johan Torp. Agenda GP introduction GP in perspective Questions * GP = Generic programming in C++
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
Introduction to Object Oriented Programming CMSC 331.
OOP Class Lawrence D’Antonio Lecture 3 An Overview of C++
Boost.Geometry Introduction to Boost.Geometry presented by Mateusz Loskot (Cadcorp Ltd.) at FOSS4G 2010.
CS212: Object Oriented Analysis and Design Lecture 9: Function Overloading in C++
CSE 303 Concepts and Tools for Software Development Richard C. Davis UW CSE – 12/6/2006 Lecture 24 – Profilers.
COP4020 Programming Languages Names, Scopes, and Bindings Prof. Xin Yuan.
Graphene So what’s the most efficient way to spam all your Facebook friends? Team Adith Tekur (System Architect/Tester) Neha Rastogi (System Integrator)
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Standard Template Library The Standard Template Library was recently added to standard C++. –The STL contains generic template classes. –The STL permits.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
1 CSC241: Object Oriented Programming Lecture No 25.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Software testing techniques Software testing techniques Object-oriented software testing Presentation on the seminar Kaunas University of Technology.
3C-1 Purity Typing Language semantics Inheritance model  Single vs. Multiple inheritance  Common root Modular mechanisms Generics Object Oriented Languages.
Callista Enterprise Test Driven ESB Development Sofia Jonsson
Software Design 1.1 CPS 108, Spring 2006 l Object oriented programming and design, we'll use Java and C++  Language independent concepts including design.
How to execute Program structure Variables name, keywords, binding, scope, lifetime Data types – type system – primitives, strings, arrays, hashes – pointers/references.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
CSCI-383 Object-Oriented Programming & Design Lecture 25.
1 C# - Inheritance and Polymorphism. 2 1.Inheritance 2.Implementing Inheritance in C# 3.Constructor calls in Inheritance 4.Protected Access Modifier 5.The.
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
Introduction to C++ Course Version 1.0. Topics Course Outline Course Materials Syllabus Blackboard Forum Why C++
Easy ETL with Andrzej Kukuła – Marcin Szeliga –
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2005.
Game Architecture Rabin is a good overview of everything to do with Games A lot of these slides come from the 1st edition CS 4455.
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Behavioral Design Patterns
Data Abstraction: The Walls
Chapter 1 Data Abstraction: The Walls
OOP What is problem? Solution? OOP
Object-Orientated Programming
CS212: Object Oriented Analysis and Design
Object Oriented Analysis and Design
Chapter 7 Software Engineering.
Model-view-controller
Oriented Design and Abstract Data Type
Dependency Inversion principle
Chapter 8 - Design Strategies
CSCE156: Introduction to Computer Science II
Presentation transcript:

Modern C++ in practice

Goals Practical experience of C++ best practices, idioms and details Design patterns in C++ Generic, functional and template programming Using boost and STL Utilize APIs, books and mailing lists Coherent coding style and get to know each other

Why bother with details? Cons More than 20 years old Backwards compatible with C Lots of mistakes in both language and library Very complex Pros Powerful features Well spread Vivid community Rapidly developing

Polymorphism in C++ Virtual keyword Function pointers Function overloading Implicit type conversion Concepts Policy classes Argument dependent lookup (ADL) Partial template specialization

C++ programming Object oriented programming Generic programming Functional programming Template metaprogramming Blend these paradigms to acheive code that is Simple and easily read Decoupled and testable Robust to change Reusable

Roadmap Very unclear Start today and see how it evolves Think about: What you want to learn? Should we add or remove goals?

Today boost::variant boost::signals Discuss slots n’ signals relation to bind and function My observable class Pair-wise design of a toy problem Discuss design differences

Toy problem: Cat n’ Rat Design logical interfaces and concepts for a simple game 2D discrete coordinate world Contains cats, rats, cheese and obstacles Move events appear for cats and rats Collision detection, not handling

Toy problem: Focus Focus the design on When working try to Low coupling, high cohesion Robustness to future changes Event driven information flow When working try to Use boost and STL Push error checking towards compile and link time Write generic code when it doesn’t complicate design

Future suggestions Implement logical model Design and maybe implement: Text view Collision handling Serialization Simple client/server Extend game functionality Implement message distributor