Dynamic Polymorphism in C++ Tom Latham
|
|
- Barnaby Sims
- 7 years ago
- Views:
Transcription
1 Dynamic Polymorphism in C++ Tom Latham
2 Recapping Day 4: Templates Templates in C++: Static Polymorphism. Identified concepts in some of our functions as being generic and reimplemented them as function templates. C++ Standard Template Library: Generic {associative, sequence} containers, algorithms and iterators. Used templates and the STL to implement the ParticleInfo database object.
3 Today: From Static to Dynamic Polymorphism Polymorphism The ability of one generic type to behave in many concrete ways. We saw last week how templates enable this, but The polymorphism is locked at compile time, hence the term static Today we ll see how we can achieve runtime, or dynamic, polymorphism This is achieved through type-sharing In C++, the mechanism for this is public inheritance.
4 Starter Files for Today s Exercises On the webpage for today, you ll find a link to Ben s github repository tag v4.1.0 for pp6calculator including files which you ll need for today s exercises We ve applied a few changes to make today s code easier to write: Add Name and Charge data members to Particle. Determine Particle name(pdg code), mass and charge using ParticleInfo and PDG code(name) supplied to Particle constructor. Additional member/free functions and streaming operators for Particle and a new function for FileReader that allows you to interpret each line in an appropriately formatted file as, e.g., a Particle object: Particle bob = reader.getline<particle>(); Implement ParticleInfo as a Singleton for easier access.
5 Aside: The Singleton Design Pattern The Singleton is a design pattern for a class which has one, and only one, instance, has a global point of access, and is guaranteed to be initialised before first use. The basic implementation involves a private constructor/destructor, plus private and unimplemented copy constructor/ assignment operator. There is also a private static data member which is a pointer to the single instance, plus a public static method which returns a pointer or reference to this instance. Notes See the Gang of Four book for more details: Be warned that Singletons are overused and can be a sign of bad design.
6 Types We ve used the word type in relation to the objects in our code several times: Built-in types: int, double, char, User-defined types: ThreeVector, FourVector, Families of types: vector<int>, vector<double>, vector<char>,
7 Sharing Type Software design often throws up cases where a set of types all exhibit an Is a Kind Of relationship to some, more abstract, concept. e.g. Car, Bus, Lorry are all kinds of Vehicle That is, they all share a type, which is Vehicle What this means in C++ terms is that they all provide the same interface, i.e. the same set of public member functions, e.g. int changegear(); bool startengine();
8 Sharing Type in a Strongly Typed Language We might want to store instances of, say, Car, Motorbike, Scooter in a container vector<??> caughtspeeding; We might design a class that has a data member that may change between, say, Car, Motorbike, Scooter as time changes: class Employee { private:?? personalvehicle; }; Unfortunately, neither is possible directly as C++ is a strongly typed language, i.e. we have to supply, at compile-time, the type??. We need a mechanism to express the type sharing relationship in the code.
9 Public Inheritance Type sharing in C++ is achieved through public inheritance. You create a new class that contains only the signatures of the member functions, i.e. the interface, that defines the common, abstract type. This class generally contains no data members or code! Classes that want to share this type publicly inherit from this base class. What they inherit is the obligation to provide the public member functions specified by the base class.
10 Writing Purely Abstract Base Classes A pabc specifies the interface a type must provide and implement, but no data and no implementation for this interface, as shown below. We see the new C++ keyword virtual prepended to each method signature. This tells the compiler to defer the decision on which actual code to call until runtime. Each method has =0 appended to inform the compiler that no actual implementation is provided for the method - it is pure virtual. Notes It s important to note that the destructor must be specified and must be virtual. This is so that classes inheriting the pabc are destructed correctly.
11 Exercise 1: A basic pabc for a selection cut interface Write a pabc called Cut It should have two pure virtual member functions: Both of whose name is select and neither of which change the calling instance One takes a Particle object as its argument and returns a decision on whether or not that Particle is selected, expressed as a bool The other takes as input a std::vector of Particle objects and returns another that contains only those that are selected It will also need a virtual destructor
12 Recap on Public Inheritance It is the mechanism by which we inform the compiler that our concrete classes - those from which we create instances - also hold the type of the abstract base class The terms derived class and base class are often used to describe this inheritance relationship Public inheritance means that all the public methods in the base class remain public in the derived class (hence they share an interface). C++ also allows private and protected inheritance, which result in sharing of implementation but not shared type Composition/Aggregation are better design patterns in these cases.
13 Writing Derived Classes To derive a class, say Car, from our Vehicle base class, we create class Car and append : public Vehicle, as shown below, to make Car publicly inherit from Vehicle. The Car interface must include all the pure virtual method signatures from Vehicle, plus any specific to Car (like the constructor) and data members relevant to Car. The implementation of the virtual methods for Car follows just as for any other class. Notes Like any other type, we have to ensure the declaration of the base class is present before we can inherit from it. As the derived class will implement the pure virtual methods, these are still declared virtual in Car, but we remove the =0 marker.
14 Exercise 2: Deriving a Mass Cut class Write a concrete class to make a selection on the mass of a particle, which publicly inherits from the Cut pabc Name the class MassCut Implement the constructor(s), destructor Implement the select methods to apply the selection to a single Particle object and a list of them Some design hints are on the next few slides... Add an operation to pp6calculator to create an instance of MassCut and use it to select particles with mass greater than 0.4 GeV/c 2, printing out those that pass You should read the Particle objects from the particles.dat file supplied on today s webpage
15 Exercise 2: Hints Think about the constructor(s) of MassCut You will need to specify: The type of cut (less-than, greater-than, a range, etc.) The value(s) to be used in the cut Should perform simple checks, e.g. that the values are the right way round in a range-type cut Data members: the cut type and value(s)
16 Exercise 3: Implementing other concrete classes Repeat what you ve done for MassCut for two further concrete classes that apply cuts based on the particle energy and momentum (magnitude) Add two new operations to pp6calculator that create an instance of these new classes and apply cuts to the input list of particles: Energy in the range 2.0 to 2.5 GeV Momentum less than 2.25 GeV/c
17 Finally, Dynamic Polymorphism We ve now got implementations of three concrete types, MassCut, EnergyCut, and MomentumCut, which also have the shared type Cut Now we can take advantage of the combination of Type Sharing (via public inheritance) Late binding/dynamic dispatch (via virtual methods) So we can now address a set of different concrete instances of derived classes through a pointer or reference to the base class
18 Using Dynamic Polymorphism If you remember back to our example, we wanted to hold different concrete types in a (type homogeneous) vector. As we can see below, we create a vector holding pointers to our abstract type Cut. Via dynamic polymorphism, we can fill this vector with the different concrete classes of Cut because they have the Is A Kind Of relationship. When we message the base class pointer, we get different behaviour depending on the concrete type of the instance pointed to. Notes We can only achieve dynamic polymorphism via pointers or references.
19 Exercise 4: Dynamic Dispatch Add an operation to pp6calculator that creates a container holding pointers to Cut Provide an interface to read in the required set of cuts from a text file, and add appropriate instances to the container Provide an interface to loop through the container, applying in turn the selections to the list of particles Think about how to clean up the collection of Cut objects to avoid memory leaks
20 Garbage Collection As hinted at in the Exercise 4 guide, if you used new to create the concrete Cut instances, then you also need to use delete to clean them up This is relatively awkward since you have to iterate through the container, deleting as you go Also, what happens if you copy the vector and the copy (or the original) then deletes the pointers? Thankfully, there are ways to handle both cases safely and automatically
21 Smart Pointers Instead of using raw pointers, we can hand them over to an object known as a smart pointer. This object hold the pointer, provides transparent access to it (so working with the smart pointer is essentially the same as working with the raw) and implements the policies controlling how and when the object pointed to is deleted. The Boost libraries provide a shared_ptr object. This tracks how many copies of a given pointer are in use, deleting the pointer once the last copy of the shared_ptr goes out of scope Notes C++ does provide the auto_ptr object, but this does not behave as you might expect, and should never be used in collections! See the Boost Docs for more on shared_ptr:
22 Smart Pointers Instead of using raw pointers, we can hand them over to an object known as a smart pointer. This object hold the pointer, provides transparent access to it (so working with the smart pointer is essentially the same as working with the raw) and implements the policies controlling how and when the object pointed to is deleted. The Boost libraries provide a shared_ptr object. This tracks how many copies of a given pointer are in use, deleting the pointer once the last copy of the shared_ptr goes out of scope Notes C++ 11 provides a set of smart pointers, including shared_ptr and helper functions, such as make_shared. To convert this code to use C++11, simply replace the include with <memory> and replace boost with std in the scope resolution. For more details, see for example this page.
23 Exercise 5: Using boost::shared_ptr Modify the collection of pointers to Cut you implemented to use boost::shared_ptrs instead. Hint: Add the following two lines to your top level CMakeLists.txt to find and use Boost: find_package(boost REQUIRED) include_directories(${boost_include_dirs}) Add cout statements to the destructors of the Cut base and derived classes. Do the objects actually get deleted when you expect them to be, e.g. when vector clear is called or when the vector goes out of scope?
24 Abstract Base Classes You have probably noticed that you had to write lots of identical code when creating the 3 concrete classes this is inefficient! We could move some of this code up into the pabc but then it wouldn t be purely abstract any more and its job is to simply define a type So instead we add a new layer in the inheritance structure, an Abstract Base Class (or ABC), which inherits from the pabc and from which the concrete classes inherit (instead of from the pabc) So we have the pabc that defines the type and the ABC that allows some sharing of implementation
25 Protected access This is the third category of access specifier (public, protected, private) Depending on how exactly you implement things (as usual, there are many different possibilities!) you may or may not come across a need for protected access in the final exercise It is useful in any scenario where you have a utility function in the base class that needs to be called by the derived classes You don t want it to be public but making it private hides it from the derived classes Making it protected means that it can be accessed by the class itself and any classes that derived from it
26 Exercise 6: Adding the ABC layer Create an class called NumericCut that inherits from Cut Move into it all the shared code from the concrete classes You should find that you still have at least one pure virtual method Modify the concrete classes to inherit from NumericCut instead of Cut and to make use of the shared functionality it provides
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationC++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
More informationC++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
More informationStorage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
More informationObject Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
More informationObject Oriented Programming With C++(10CS36) Question Bank. UNIT 1: Introduction to C++
Question Bank UNIT 1: Introduction to C++ 1. What is Procedure-oriented Programming System? Dec 2005 2. What is Object-oriented Programming System? June 2006 3. Explain the console I/O functions supported
More informationvector vec double # in # cl in ude <s ude tdexcept> tdexcept> // std::ou std t_of ::ou _range t_of class class V Vector { ector {
Software Design (C++) 3. Resource management and exception safety (idioms and technicalities) Juha Vihavainen University of Helsinki Preview More on error handling and exceptions checking array indices
More informationCompile-time type versus run-time type. Consider the parameter to this function:
CS107L Handout 07 Autumn 2007 November 16, 2007 Advanced Inheritance and Virtual Methods Employee.h class Employee public: Employee(const string& name, double attitude, double wage); virtual ~Employee();
More informationPolymorphism. Problems with switch statement. Solution - use virtual functions (polymorphism) Polymorphism
Polymorphism Problems with switch statement Programmer may forget to test all possible cases in a switch. Tracking this down can be time consuming and error prone Solution - use virtual functions (polymorphism)
More informationVariable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
More informationOpenCL Static C++ Kernel Language Extension
OpenCL Static C++ Kernel Language Extension Document Revision: 04 Advanced Micro Devices Authors: Ofer Rosenberg, Benedict R. Gaster, Bixia Zheng, Irina Lipov December 15, 2011 Contents 1 Overview... 3
More informationC++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
More informationKITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
More informationPROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
More informationIntroduction to C++ Introduction to C++ Week 7 Dr Alex Martin 2013 Slide 1
Introduction to C++ Introduction to C++ Week 7 Dr Alex Martin 2013 Slide 1 Introduction to Classes Classes as user-defined types We have seen that C++ provides a fairly large set of built-in types. e.g
More informationLecture 7 Notes: Object-Oriented Programming (OOP) and Inheritance
Introduction to C++ January 19, 2011 Massachusetts Institute of Technology 6.096 Lecture 7 Notes: Object-Oriented Programming (OOP) and Inheritance We ve already seen how to define composite datatypes
More information1 bool operator==(complex a, Complex b) { 2 return a.real()==b.real() 3 && a.imag()==b.imag(); 4 } 1 bool Complex::operator==(Complex b) {
Operators C and C++ 6. Operators Inheritance Virtual Alastair R. Beresford University of Cambridge Lent Term 2008 C++ allows the programmer to overload the built-in operators For example, a new test for
More informationJava (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
More informationJava Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
More informationCORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
More informationCurriculum Map. Discipline: Computer Science Course: C++
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
More informationCIS 190: C/C++ Programming. Polymorphism
CIS 190: C/C++ Programming Polymorphism Outline Review of Inheritance Polymorphism Car Example Virtual Functions Virtual Function Types Virtual Table Pointers Virtual Constructors/Destructors Review of
More informationGlossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
More informationDesign Patterns in C++
Design Patterns in C++ Concurrency Patterns Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa May 4, 2011 G. Lipari (Scuola Superiore Sant Anna) Concurrency Patterns May 4,
More informationThe Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
More informationIntroduction to Programming Block Tutorial C/C++
Michael Bader Master s Program Computational Science and Engineering C/C++ Tutorial Overview From Maple to C Variables, Operators, Statements Functions: declaration, definition, parameters Arrays and Pointers
More informationObject Oriented Software Design II
Object Oriented Software Design II C++ intro Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 26, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February 26,
More informationAdvanced Data Structures
C++ Advanced Data Structures Chapter 8: Advanced C++ Topics Zhijiang Dong Dept. of Computer Science Middle Tennessee State University Chapter 8: Advanced C++ Topics C++ 1 C++ Syntax of 2 Chapter 8: Advanced
More informationThe programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
More informationMultichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations
More informationEl Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
More informationProgramming Methods & Java Examples
Programming Methods & Java Examples Dr Robert Harle, 2009 The following questions may be useful to work through for supervisions and/or revision. They are separated broadly by handout, but borders are
More informationCEC225 COURSE COMPACT
CEC225 COURSE COMPACT Course GEC 225 Applied Computer Programming II(2 Units) Compulsory Course Duration Two hours per week for 15 weeks (30 hours) Lecturer Data Name of the lecturer: Dr. Oyelami Olufemi
More informationWORKSPACE WEB DEVELOPMENT & OUTSOURCING TRAINING CENTER
WORKSPACE WEB DEVELOPMENT & OUTSOURCING TRAINING CENTER Course Outline (2015) Basic Programming With Procedural & Object Oriented Concepts (C, C++) Training Office# Road: 11, House: 1 A, Nikunja 2, Khilkhet,
More informationPART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
More informationECS 165B: Database System Implementa6on Lecture 2
ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.
More informationClasses and Pointers: Some Peculiarities (cont d.)
Classes and Pointers: Some Peculiarities (cont d.) Assignment operator Built-in assignment operators for classes with pointer member variables may lead to shallow copying of data FIGURE 3-22 Objects objectone
More informationAn Internet Course in Software Development with C++ for Engineering Students
An Internet Course in Software Development with C++ for Engineering Students Yosef Gavriel, Robert Broadwater Department of Electrical and Computer Engineering Virginia Tech Session 3232 Abstract This
More informationWhy you shouldn't use set (and what you should use instead) Matt Austern
Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationIS0020 Program Design and Software Tools Midterm, Feb 24, 2004. Instruction
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004 Name: Instruction There are two parts in this test. The first part contains 50 questions worth 80 points. The second part constitutes 20 points
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationCMSC 132: Object-Oriented Programming II. Design Patterns I. Department of Computer Science University of Maryland, College Park
CMSC 132: Object-Oriented Programming II Design Patterns I Department of Computer Science University of Maryland, College Park Design Patterns Descriptions of reusable solutions to common software design
More informationComputing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
More informationBrent A. Perdue. July 15, 2009
Title Page Object-Oriented Programming, Writing Classes, and Creating Libraries and Applications Brent A. Perdue ROOT @ TUNL July 15, 2009 B. A. Perdue (TUNL) OOP, Classes, Libraries, Applications July
More informationCourse Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
More informationFirst programming project: Key-Word indexer
University of Illinois at Chicago CS 202: Data Structures and Discrete Mathematics II Handout 2 Professor Robert H. Sloan Friday, August 30, 2002 First programming project: Key-Word indexer 1 Indexing
More information13 Classes & Objects with Constructors/Destructors
13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.
More informationCoding conventions and C++-style
Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate
More informationFree Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2015 The third
More informationCS193D Handout 06 Winter 2004 January 26, 2004 Copy Constructor and operator=
CS193D Handout 06 Winter 2004 January 26, 2004 Copy Constructor and operator= We already know that the compiler will supply a default (zero-argument) constructor if the programmer does not specify one.
More informationSoftware Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009
Software Engineering Concepts: Testing Simple Class Example continued Pointers & Dynamic Allocation CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Glenn G. Chappell Department
More informationCHAPTER 4 ESSENTIAL DATA STRUCTRURES
CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex
More informationFree Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2014 Jill Seaman
More informationGrundlagen der Betriebssystemprogrammierung
Grundlagen der Betriebssystemprogrammierung Präsentation A3, A4, A5, A6 21. März 2013 IAIK Grundlagen der Betriebssystemprogrammierung 1 / 73 1 A3 - Function Pointers 2 A4 - C++: The good, the bad and
More informationSyllabus Introduction to C++ Programming and Numerical Analysis Spring 2016
Syllabus Introduction to C++ Programming and Numerical Analysis Spring 2016 lead instructor: office: web: class time: Professor Johan Walden F655 walden@haas.berkeley.edu http://www.haas.berkeley.edu/faculty/walden.html
More informationRegular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions
More informationSources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
More informationBasic Logic Gates. Logic Gates. andgate: accepts two binary inputs x and y, emits x & y. orgate: accepts two binary inputs x and y, emits x y
Basic andgate: accepts two binary inputs x and y, emits x & y x y Output orgate: accepts two binary inputs x and y, emits x y x y Output notgate: accepts one binary input x, emits!y x Output Computer Science
More information1. Polymorphism in C++...2
1. Polymorphism in C++...2 1.1 Polymorphism and virtual functions... 2 1.2 Function call binding... 3 1.3 Virtual functions... 4 1.4 How C++ implements late binding... 6 1.4.1 Why do I have to know at
More informationCS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
More informationOpenACC 2.0 and the PGI Accelerator Compilers
OpenACC 2.0 and the PGI Accelerator Compilers Michael Wolfe The Portland Group michael.wolfe@pgroup.com This presentation discusses the additions made to the OpenACC API in Version 2.0. I will also present
More informationBasics of C++ and object orientation in OpenFOAM
Basics of C++ and object orientation in OpenFOAM To begin with: The aim of this part of the course is not to teach all of C++, but to give a short introduction that is useful when trying to understand
More informationBinary storage of graphs and related data
EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics
More informationCpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
More informationSymbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
More informationarrays C Programming Language - Arrays
arrays So far, we have been using only scalar variables scalar meaning a variable with a single value But many things require a set of related values coordinates or vectors require 3 (or 2, or 4, or more)
More informationC++ Support for Abstract Data Types
Topics C++ Support for Abstract Data Types Professor Department of EECS d.schmidt@vanderbilt.edu Vanderbilt University www.cs.wustl.edu/schmidt/ (615) 343-8197 Describing Objects Using ADTs Built-in vs.
More informationBasics of I/O Streams and File I/O
Basics of This is like a cheat sheet for file I/O in C++. It summarizes the steps you must take to do basic I/O to and from files, with only a tiny bit of explanation. It is not a replacement for reading
More informationPART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
More information6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation
More information16 Collection Classes
16 Collection Classes Collections are a key feature of the ROOT system. Many, if not most, of the applications you write will use collections. If you have used parameterized C++ collections or polymorphic
More informationINTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011
INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 1 Goals of the Lecture Present an introduction to Objective-C 2.0 Coverage of the language will be INCOMPLETE
More informationDifferences at a glance
Differences at a glance In the past, you might ve used the consumer (such as Microsoft Office 2013) version of Microsoft Excel outside of work. Now that you re using Google Apps for Work, you ll find many
More informationGetting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
More informationUsing Inheritance and Polymorphism
186 Chapter 16 Using Inheritance and Polymorphism In this chapter we make use of inheritance and polymorphism to build a useful data structure. 16.1 Abstract Classes Circle1a ( 16.1) is a variation of
More informationSubversion workflow guide
Subversion workflow guide Joanne Carr January 2010 Contents 1 Before we start: some definitions, etc. 2 2 UKRmol-in repository layout 3 3 Checking out 3 4 Monitoring and dealing with
More informationData Structures Using C++ 2E. Chapter 5 Linked Lists
Data Structures Using C++ 2E Chapter 5 Linked Lists Test #1 Next Thursday During Class Cover through (near?) end of Chapter 5 Objectives Learn about linked lists Become aware of the basic properties of
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationObject-Oriented Desin and Prorammin C++ Container Classes Outline Introduction Container Class Objectives Class Library Architecture Parameterized Types Preprocessor Macros enclass void Pointer Method
More informationMODULE 17 POLYMORPHISM
MODULE 17 POLYMORPHISM My Training Period: hours Abilities Able to understand and use: Polymorphism concept. Virtual function. Late and early binding. 17.1 Introduction - Polymorphism is a technique that
More informationIntroduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
More informationKeepers Step-by-Step Guide To Kick-Starting Your Internet Marketing Campaign!
Keepers Step-by-Step Guide To Kick-Starting Your Internet Marketing Campaign! The World of Internet Marketing is huge. If you haven t yet dipped your toes into the water, you should. That s the purpose
More informationCS11 Advanced C++ Spring 2008-2009 Lecture 9 (!!!)
CS11 Advanced C++ Spring 2008-2009 Lecture 9 (!!!) The static Keyword C++ provides the static keyword Also in C, with slightly different usage Used in two main contexts: Declaring static members of a class
More informationUse Cases. Massimo Felici. Massimo Felici Use Cases c 2004 2011
Use Cases Massimo Felici Use Cases 1 Support requirements engineering activities and the requirement process Capture what a system is supposed to do, i.e., systems functional requirements Describe sequences
More informationAdapter, Bridge, and Façade
CHAPTER 5 Adapter, Bridge, and Façade Objectives The objectives of this chapter are to identify the following: Complete the exercise in class design. Introduce the adapter, bridge, and façade patterns.
More informationLab Experience 17. Programming Language Translation
Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly
More informationJava EE Web Development Course Program
Java EE Web Development Course Program Part I Introduction to Programming 1. Introduction to programming. Compilers, interpreters, virtual machines. Primitive types, variables, basic operators, expressions,
More informationCSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.
CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation
More informationVersion Control with. Ben Morgan
Version Control with Ben Morgan Developer Workflow Log what we did: Add foo support Edit Sources Add Files Compile and Test Logbook ======= 1. Initial version Logbook ======= 1. Initial version 2. Remove
More informationLinked Lists: Implementation Sequences in the C++ STL
Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University
More informationGetting Started with 4-part Harmony
Getting Started with 4-part Harmony Some of you have already written chord progressions in a previous theory class. However, it is my experience that few students come to college with the ability to consistently
More informationExercise 1: Python Language Basics
Exercise 1: Python Language Basics In this exercise we will cover the basic principles of the Python language. All languages have a standard set of functionality including the ability to comment code,
More informationTypeScript for C# developers. Making JavaScript manageable
TypeScript for C# developers Making JavaScript manageable Agenda What is TypeScript OO in TypeScript Closure Generics Iterators Asynchronous programming Modularisation Debugging TypeScript 2 What is TypeScript
More informationCrash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
More informationC++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
More informationwww.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk
CS506 Web Design and Development Solved Online Quiz No. 01 Which of the following is a general purpose container? JFrame Dialog JPanel JApplet Which of the following package needs to be import while handling
More informationChapter One Introduction to Programming
Chapter One Introduction to Programming 1-1 Algorithm and Flowchart Algorithm is a step-by-step procedure for calculation. More precisely, algorithm is an effective method expressed as a finite list of
More informationPre-Algebra Lecture 6
Pre-Algebra Lecture 6 Today we will discuss Decimals and Percentages. Outline: 1. Decimals 2. Ordering Decimals 3. Rounding Decimals 4. Adding and subtracting Decimals 5. Multiplying and Dividing Decimals
More information