|
|
|
- Marian Little
- 10 years ago
- Views:
Transcription
1 The C++ Programming Language Single and Multiple Inheritance in C++ Douglas C. Schmidt Washington University, St. Louis 1
2 Background Object-oriented programming is often de- ned as the combination of Abstract Data Types (ADTs) with Inheritance and Dynamic Binding Each concept addresses a dierent aspect of system decomposition: 1. ADTs decompose systems into two-dimensional grids of modules { Each module has public and private interfaces 2. Inheritance decomposes systems into three-dimensional hierarchies of modules { Inheritance relationships form a \lattice" 3. Dynamic binding enhances inheritance { e.g., defer implementation decisions until late in the design phase or even until run-time! 2
3 Data Abstraction vs. Inheritance 3
4 Motivation for Inheritance Inheritance allows you to write code to handle certain cases and allows other developers to write code that handles more specialized cases, while your code continues to work Inheritance partitions a system architecture into semi-disjoint components that are related hierarchically Therefore, we may be able to modify and/or reuse sections of the inheritance hierarchy without disturbing existing code, e.g., { Change sibling subtree interfaces i.e., a consequence of inheritance { Change implementation of ancestors i.e., a consequence of data abstraction 4
5 Inheritance Overview A type (called a subclass or derived type) can inherit the characteristics of another type(s) (called a superclass or base type) { The term subclass is equivalent to derived type A derived type acts just like the base type, except for an explicit list of: 1. Specializations { Change implementations without changing the base class interface Most useful when combined with dynamic binding 2. Generalizations/Extensions { Add new operations or data to derived classes 5
6 Visualizing Inheritance 6
7 Types of Inheritance Inheritance comes in two forms, depending on number of parents a subclass has 1. Single Inheritance (SI) { Only one parent per derived class { Form an inheritance \tree" { SI requires a small amount of run-time overhead when used with dynamic binding { e.g., Smalltalk, Simula, Object Pascal 2. Multiple Inheritance (MI) { More than one parent per derived class { Forms an inheritance \Directed Acyclic Graph" (DAG) { Compared with SI, MI adds additional runtime overhead (also involving dynamic binding) { e.g., C++, Eiel, Flavors (a LISP dialect) 7
8 Inheritance Trees vs. Inheritance DAGs 8
9 Inheritance Benets 1. Increase reuse and software quality Programmers reuse the base classes instead of writing new classes { Integrates black-box and white-box reuse by allowing extensibility and modication without changing existing code Using well-tested base classes helps reduce bugs in applications that use them Reduce object code size 2. Enhance extensibility and comprehensibility Helps support more exible and extensible architectures (along with dynamic binding) { i.e., supports the open/closed principle Often useful for modeling and classifying hierarchicallyrelated domains 9
10 Inheritance Liabilities 1. May create deep and/or wide hierarchies that are hard to understand and navigate without class browser tools 2. May decrease performance slightly i.e., when combined with multiple inheritance and dynamic binding 3. Without dynamic binding, inheritance has only limited utility Likewise, dynamic binding is almost totally useless without inheritance 4. Brittle hierarchies, which may impose dependencies upon ancestor names 10
11 Inheritance in C++ Deriving a class involves an extension to the C++ class declaration syntax The class head is modied to allow a derivation list consisting of base classes e.g., class Foo f /* ::: class Bar : public Foo f /* ::: class Foo : public Foo, public Bar f /* ::: 11
12 Key Properties of C++ Inheritance The base/derived class relationship is explicitly recognized in C++ by predened standard conversions { i.e., a pointer to a derived class may always be assigned to a pointer to a base class that was inherited publically But not vice versa: :: When combined with dynamic binding, this special relationship between inherited class types promotes a type-secure, polymorphic style of programming { i.e., the programmer need not know the actual type of a class at compile-time { Note, C++ is not truly polymorphic i.e., operations are not applicable to objects that don't contain denitions of these operations at some point in their inheritance hierarchy 12
13 Simple Screen Class The following code is used as the base class: class Screen f public: Screen (int = 8, int = 40, char = ' '); ~Screen (void); short height (void) const f return this->height ; g short width (void) const f return this->width ; g void height (short h) f this->height = h; g void width (short w) f this->width = w; g Screen &forward (void); Screen &up (void); Screen &down (void); Screen &home (void); Screen &bottom (void); Screen &display (void); Screen © (const Screen &); // ::: private: short height, width ; char *screen, *cur pos ; 13
14 Subclassing from Screen class Screen can be a public base class of class Window e.g., class Window : public Screen f public: Window (const Point &, int rows = 24, int columns = 80, char default char = ' '); void set foreground color (Color &); void set background color (Color &); void resize (int height, int width); // ::: private: Point center ; Color foreground ; Color background ; // ::: 14
15 Multiple Levels of Derivation A derived class can itself form the basis for further derivation, e.g., class Menu : public Window f public: void set label (const char *l); Menu (const Point &, int rows = 24, int columns = 80, char default char = ' '); // ::: private: char *label ; // ::: class Menu inherits data and methods from both Window and Screen { i.e., sizeof (Menu) >= sizeof (Window) >= sizeof (Screen) 15
16 The Screen Inheritance Hierarchy Screen/Window/Menu hierarchy 16
17 Variations on a Screen: : : A pointer to a derived class can be assigned to a pointer to any of its public base classes without requiring an explicit cast: Menu m; Window &w = m; Screen *ps1 = &w; Screen *ps2 = &m; 17
18 Using the Screen Hierarchy e.g., class Screen f public: virtual void dump (ostream &); = 0 g class Window : public Screen f public: virtual void dump (ostream &); class Menu : public Window f public: virtual void dump (ostream &); // stand-alone function void dump image (Screen *s, ostream &o) f // Some processing omitted s->dump (o); // (*s->vptr[1]) (s, o)); g Screen s; Window w; Menu m; Bit Vector bv; // OK: Window is a kind of Screen dump image (&w, cout); // OK: Menu is a kind of Screen dump image (&m, cout); // OK: argument types match exactly dump image (&s, cout); // Error: Bit Vector is not a kind of Screen! dump image (&bv, cout); 18
19 Using Inheritance for Specialization A derived class specializes a base class by adding new, more specic state variables and methods { Method use the same interface, even though they are implemented dierently i.e., \overridden" { Note, there is an important distinction between overriding, hiding, and overloading: :: A variant of this is used in the template method pattern { i.e., behavior of the base class relies on functionality supplied by the derived class { This is directly supported in C++ via abstract base classes and pure virtual functions 19
20 Specialization Example Inheritance may be used to obtain the features of one data type in another closely related data type For example, class Date represents an arbitrary Date: class Date f public: Date (int m, int d, int y); virtual void print (ostream &s) const; // ::: private: int month, day, year ; Class Birthday derives from Date, adding a name eld representing the person's birthday, e.g., class Birthday : public Date f public: Birthday (const char *n, int m, int d, int y) : Date (m, d, y), person (strdup (n)) fg ~Birthday (void) f free (person ); g virtual void print (ostream &s) const; // ::: private: const char *person ; 20
21 Implementation and Use-case Birthday::print could print the person's name as well as the date, e.g., void Birthday::print (ostream &s) const f s << this->person << " was born on "; Date::print (s); s << "\n"; g e.g., const Date july 4th (7, 4, 1993); Birthday my birthday ("Douglas C. Schmidt", 7, 18, 1962); july 4th.print (cerr); // july 4th, 1993 my birthday.print (cout); // Douglas C. Schmidt was born on july 18th, 1962 Date *dp = &my birthday; dp->print (cerr); //??? what gets printed??? // (*dp->vptr[1])(dp, cerr); 21
22 Alternatives to Specialization Note that we could also use object composition instead of inheritance for this example, e.g., class Birthday f public Birthday (char *n, int m, int d, int y): date (m, d, y), person (n) fg // same as before private: Date date ; char *person ; However, in this case we would not be able to utilize the dynamic binding facilities for base classes and derived classes { e.g., Date *dp = &my birthday; // ERROR, Birthday is not a subclass of date! { While this does not necessarily aect reusability, it does aect extensibility: :: 22
23 Using Inheritance for Extension/Generalization Derived classes add state variables and/or operations to the properties and operations associated with the base class { Note, the interface is generally widened! { Data member and method access privileges may also be modied Extension/generalization is often used to faciliate reuse of implementations, rather than interface { However, it is not always necessary or correct to export interfaces from a base class to derived classes 23
24 Extension/Generalization Example Using class Vector as a private base class for derived class Stack class Stack : private Vector f /* :::*/ In this case, Vector's operator[] may be reused as an implementation for the Stack push and pop methods { Note that using private inheritance ensures that operator[] does not show up in the interface for class Stack! Often, a better approach in this case is to use a composition/has-a rather than a descendant/is-a relationship: :: 24
25 Vector Interface Using class Vector as a base class for a derived class such as class Checked Vector or class Ada Vector { One can dene a Vector class that implements an unchecked, uninitialized array of elements of type T e.g., /* File Vector.h (incomplete wrt initialization and assignment) */ // Bare-bones implementation, fast but not safe template <class T> class Vector f public: Vector (size t s); ~Vector (void); size t size (void) const; T &operator[] (size t index); private: T *buf ; size t size ; 25
26 Vector Implementation e.g., template <class T> Vector<T>::Vector (size t s): size (s), buf (new T[s]) fg template <class T> Vector<T>::~Vector (void) f delete [] this->buf ; g template <class T> size t Vector<T>::size (void) const f return this->size ; g template <class T> T & Vector<T>::operator[] (size t i) f return this->buf [i]; g int main (void) f Vector<int> v (10); v[6] = v[5] + 4; // oops, no initial values int i = v[v.size ()]; // oops, out of range! // destructor automatically called g 26
27 Benets of Inheritance Inheritance enables modication and/or extension of ADTs without changing the original source code { e.g., someone may want a variation on the basic Vector abstraction: 1. A vector whose bounds are checked on every reference 2. Allow vectors to have lower bounds other than 0 3. Other vector variants are possible too: :: e.g., automatically-resizing vectors, initialized vectors, etc. This is done by dening new derived classes that inherit the characteristics of the Vector base class { Note that inheritance also allows code to be shared 27
28 Checked Vector Interface The following is a subclass of Vector that allows run-time range checking: /* File Checked-Vector.h (incomplete wrt initialization and assignment) */ struct RANGE ERROR f "range error" (size t index); // ::: template <class T> class Checked Vector : public Vector<T> f public: Checked Vector (size t s); T &operator[] (size t i) throw (RANGE ERROR); // Vector::size () inherited from base class Vector. protected: bool in range (size t i) const; private: typedef Vector<T> inherited; 28
29 Implementation of Checked Vector e.g., template <class T> bool Checked Vector<T>::in range (size t i) const f return i < this->size (); g template <class T> Checked Vector<T>::Checked Vector (size t s) : inherited (s) fg template <class T> T & Checked Vector<T>::operator[] (size t i) throw (RANGE ERROR) f g if (this->in range (i)) return (*(inherited *) this)[i]; // return BASE::operator[](i); else throw RANGE ERROR (i); 29
30 Checked Vector Use-case e.g., #include "Checked Vector.h" typedef Checked Vector<int> CV INT; int foo (int size) f g try f CV INT cv (size); int i = cv[cv.size ()]; // Error detected! // exception raised: :: // Call base class destructor g catch (RANGE ERROR) f /* :::*/ g 30
31 Design Tip Note, dealing with parent and base classes { It is often useful to write derived classes that do not encode the names of their direct parent class or base class in any of the method bodies { Here's one way to do this systematically: class Base f public: int foo (void); class Derived 1 : public Base f typedef Base inherited; public: int foo (void) f inherited::foo (); g class Derived 2 : public Derived 1 f typedef Derived 1 inherited; public: int foo (void) f inherited::foo (); g { This scheme obviously doesn't work as transparently for multiple inheritance: :: 31
32 Ada Vector Interface The following is an Ada Vector example, where we can have array bounds start at something other than zero /* File ada vector.h (still incomplete wrt initialization and assignment: ::.) */ #include "vector.h" // Ada Vectors are also range checked! template <class T> class Ada Vector : private Checked Vector<T> f public: Ada Vector (size t l, size t h); T &operator ()(size t i) throw (RANGE ERROR) inherited::size; // explicitly extend visibility private: typedef Checked Vector<T> inherited; size t lo bnd ; 32
33 Ada Vector Implementation e.g., class Ada Vector (cont'd) template <class T> Ada Vector<T>::Ada Vector (size t lo, size t hi) : inherited (hi, lo + 1), lo bnd (lo) fg template <class T> T & Ada Vector<T>::operator ()(size t i) throw (RANGE ERROR) f if (this->in range (i, this->lo bnd )) return Vector<T>::operator[] (i, this->lo bnd ); // or Vector<T> &self = *(Vector<T> *) this; // self[i, this->lo bnd ]; else throw RANGE ERROR (i); g 33
34 Ada Vector Use-case Example Ada Vector Usage (File main.c) #include <iostream.h> #include <stdlib.h> #include "ada vector.h" int main (int argc, char *argv[]) f try f size t lower = ::atoi (argv[1]); size t upper = ::atoi (argv[2]); Ada Vector<int> ada vec (lower, upper); ada vec (lower) = 0; for (size t i = lower + 1; i <= ada vec.size (); i++) ada vec (i) = ada vec (i, 1) + 1; // Run-time error, index out of range ada vec (upper + 1) = 100; g // Vector destructor called when // ada vec goes out of scope g catch (RANGE ERROR) f /* :::*/ g 34
35 Memory Layout Memory layouts in derived classes are created by concatenating memory from the base class(es) { e.g., // from the cfront-generated.c le struct Vector f T *buf 6Vector; size t size 6Vector; struct Checked Vector f T *buf 6Vector; size t size 6Vector; struct Ada Vector f T *buf 6Vector; // Vector size t size 6Vector; // part size t lo bnd 10Ada Vector; // Ada Vector The derived class constructor calls the base constructor in the \base initialization section," i.e., Ada Vector<T>::Ada Vector (size t lo, size t hi) : inherited (hi, lo + 1), lo bnd (lo) fg 35
36 Base Class Constructor Constructors are called from the \bottom up" Destructors are called from the \top down" e.g., /* Vector constructor */ struct Vector * ct 6VectorFi (struct Vector * 0this, size t 0s) f if ( 0this jj ( 0this = nw FUi (sizeof (struct Vector)))) g return (( 0this->size 6Vector = 0s), ( 0this->buf 6Vector = nw FUi ((sizeof (int)) * 0s))); 0this; 36
37 Derived Class Constructors e.g., /* Checked Vector constructor */ struct Checked Vector * ct 14Checked VectorFi ( struct Checked Vector * 0this, size t 0s) f if ( 0this jj ( 0this = nw FUi (sizeof (struct Checked Vector)))) 0this = ct 6VectorFi ( 0this, 0s); return 0this; g /* Ada Vector constructor */ struct Ada Vector * ct 10Ada VectorFiT1 ( struct Ada Vector * 0this, size t 0lo, size t 0hi) f if ( 0this jj ( 0this = nw FUi (sizeof (struct Ada Vector)))) if ((( 0this = ct 14Checked VectorFi ( 0this, 0hi, 0lo + 1)))) g return 0this->lo bnd 10Ada Vector = 0lo; 0this; 37
38 Destructor Note, destructors, constructors, and assignment operators are not inherited However, they may be called automatically were necessary, e.g., char dt 6VectorFv ( g struct Vector * 0this, int 0 free) f if ( 0this) f g dl FPv ((char *) 0this->buf 6Vector); 0this) if ( 0 free & 1) dl FPv ((char *) 0this); if ( 38
39 Describing Relationships Between Classes Consumer/Composition/Aggregation { A class is a consumer of another class when it makes use of the other class's services, as dened in its interface For example, a Stack implementation could rely on an array for its implementation and thus be a consumer of the Array class { Consumers are used to describe a Has-A relationship Descendant/Inheritance/Specialization { A class is a descendant of one or more other classes when it is designed as an extension or specialization of these classes. This is the notion of inheritance { Descendants are used to describe an Is-A relationship 39
40 Has-A vs. Is-A Relationships 40
41 Interface vs. Implementation Inheritance Class inheritance can be used in two primary ways: 1. Interface inheritance: a method of creating a subtype of an existing class for purposes of setting up dynamic binding, e.g., { Circle is a subclass of Shape (i.e., Is-A relation) { A Birthday is a subclass of Date 2. Implementation inheritance: a method of reusing an implementation to create a new class type { e.g., a class Stack that inherits from class Vector. A Stack is not really a subtype or specialization of Vector { In this case, inheritance makes implementation easier, since there is no need to rewrite and debug existing code. This is called \using inheritance for reuse" i.e., a pseudo-has-a relation 41
42 The Dangers of Implementation Inheritance Using inheritance for reuse may sometimes be a dangerous misuse of the technique { Operations that are valid for the base type may not apply to the derived type at all e.g., performing an subscript operation on a stack is a meaningless and potentially harmful operation class Stack : public Vector f // ::: Stack s; s[10] = 20; // could be big trouble! { In C++, the use of a private base class minimizes the dangers i.e., if a class is derived \private," it is illegal to assign the address of a derived object to a pointer to a base object { On the other hand, a consumer/has-a relation might be more appropriate: :: 42
43 Private vs Public vs Protected Derivation Access control speciers (i.e., public, private, protected) are also meaningful in the context of inheritance In the following examples: { <: ::.> represents actual (omitted) code { [: ::.] is implicit Note, all the examples work for both data members and methods 43
44 Public Derivation e.g., class A f public: <public A> protected: <protected A> private: <private A> class B : public A f public: [public A] <public B> protected: [protected A] <protected B> private: <private B> 44
45 Private Derivation e.g., class A f public: <public A> private: <private A> protected: <protected A> class B : private A f // also class B : A public: <public B> protected: <protected B> private: [public A] [protected A] <private B> 45
46 Protected Derivation e.g., class A f public: <public A> protected: <protected A> private: <private A> class B : protected A f public: <public B> protected: [protected A] [public A] <protected B> private: <private B> 46
47 Summary of Access Rights The following table describes the access rights of inherited methods { The vertical axis represents the access rights of the methods of base class { The horizontal access represents the mode of inheritance INHERITANCE ACCESS M A public pub pro pri E C M C protected pro pro pri B E E S private n/a n/a n/a R S p p p u r r b o i l t v Note that the resulting access is always the most restrictive of the two 47
48 Other Uses of Access Control Speciers Selectively redene visibility of individual methods from base classes that are derived privately class A f public: int f (); int g ; ::: private: int p ; class B : private A f public: A::f; // Make public protected: A::g ; // Make protected 48
49 Common Errors with Access Control Speciers It is an error to \increase" the access of an inherited method in a derived class { e.g., you may not say: class B : private A f // nor protected nor public! public: A::p ; // ERROR! It is also an error to derive publically and then try to selectively decrease the visibility of base class methods in the derived class { e.g., you may not say: class B : public A f private: A::f; // ERROR! 49
50 General Rules for Access Control Speciers Private methods of the base class are not accessible to a derived class (unless the derived class is a friend of the base class) If the subclass is derived publically then: 1. Public methods of the base class are accessible to the derived class 2. Protected methods of the base class are accessible to derived classes and friends only 50
51 Caveats Using protected methods weakens the data hiding mechanism since changes to the base class implementation might aect all derived classes. e.g., class Vector f public: //: :: protected: // allow derived classes direct access T *buf ; size t size ; class Ada Vector : public Vector f public: T &operator() (size t i) f return this->buf [i]; g // Note the strong dependency on the name buf However, performance and design reasons may dictate use of the protected access control specier { Note, inline functions often reduces the need for these eciency hacks: :: 51
52 Overview of Multiple Inheritance in C++ C++ allows multiple inheritance { i.e., a class can be simultaneously derived from two or more base classes { e.g., class X f /* :::. */ class Y : public X f /* :::. */ class Z : public X f /* :::. */ class YZ : public Y, public Z f /* :::. */ { Derived classes Y, Z, and YZ inherit the data members and methods from their respective base classes 52
53 Multiple Inheritance Illustrated 53
54 Liabilities of Multiple Inheritance A base class may legally appear only once in a derivation list, e.g., { class Two Vector : public Vector, public Vector // ERROR! However, a base class may appear multiple times within a derivation hierarchy { e.g., class YZ contains two instances of class X This leads to two problems with multiple inheritance: 1. It gives rise to a form of method and data member ambiguity { Explicitly qualied names and additional methods are used to resolve this 2. It also may cause unnecessary duplication of storage { \Virtual base classes" are used to resolve this 54
55 Motivation for Virtual Base Classes Consider a user who wants an Init Checked Vector: class Checked Vector : public virtual Vector f /* :::. */ class Init Vector : public virtual Vector f /* :::. */ class Init Checked Vector : public Checked Vector, public Init Vector f /* :::. */ In this example, the virtual keyword, when applied to a base class, causes Init Checked Vector to get one Vector base class instead of two 55
56 Overview of Virtual Base Classes Virtual base classes allow class designers to specify that a base class will be shared among derived classes { No matter how often a virtual base class may occur in a derivation hierarchy, only \one" shared instance is generated when an object is instantiated Under the hood, pointers are used in derived classes that contain virtual base classes Understanding and using virtual base classes correctly is a non-trivial task since you must plan in advance { Also, you must be aware when initializing subclasses objects: :: However, virtual base classes are used to implement the client and server side of many implementations of CORBA distributed objects 56
57 Virtual Base Classes Illustrated 57
58 Initializing Virtual Base Classes With C++ you must chose one of two methods to make constructors work correctly for virtual base classes: 1. You need to either supply a constructor in a virtual base class that takes no arguments (or has default arguments), e.g., Vector::Vector (size t size = 100); // has problems: :: 2. Or, you must make sure the most derived class calls the constructor for the virtual base class in its base initialization section, e.g., Init Checked Vector (size t size, const T &init): Vector (size), Check Vector (size), Init Vector (size, init) 58
59 Vector Interface Revised The following example illustrates templates, multiple inheritance, and virtual base classes in C++ #include <iostream.h> #include <assert.h> // A simple-minded Vector base class, // no range checking, no initialization. template <class T> class Vector f public: Vector (size t s): size (s), buf (new T[s]) fg T &operator[] (size t i) f return this->buf [i]; g size t size (void) const f return this->size ; g private: size t size ; T *buf ; 59
60 Init Vector Interface A simple extension to the Vector base class, that enables automagical vector initialization template <class T> class Init Vector : public virtual Vector<T> f public: Init Vector (size t size, const T &init) : Vector<T> (size) f for (size t i = 0; i < this->size (); i++) (*this)[i] = init; g // Inherits subscripting operator and size(). 60
61 Checked Vector Interface A simple extension to the Vector base class that provides range checked subscripting template <class T> class Checked Vector : public virtual Vector<T> f public: Checked Vector (size t size): Vector<T> (size) fg T &operator[] (size t i) throw (RANGE ERROR) f if (this->in range (i)) return (*(inherited *) this)[i]; else throw RANGE ERROR (i); g // Inherits inherited::size. private: typedef Vector<T> inherited; bool in range (size t i) const f return i < this->size (); g 61
62 Init Checked Vector Interface and Driver A simple multiple inheritance example that provides for both an initialized and range checked Vector template <class T> class Init Checked Vector : public Checked Vector<T>, public Init Vector<T> f public: Init Checked Vector (size t size, const T &init): Vector<T> (size), Init Vector<T> (size, init), Checked Vector<T> (size) fg // Inherits Checked Vector::operator[] Driver program int main (int argc, char *argv[]) f try f size t size = ::atoi (argv[1]); size t init = ::atoi (argv[2]); Init Checked Vector<int> v (size, init); cout << "vector size = " << v.size () << ", vector contents = "; for (size t i = 0; i < v.size (); i++) cout << v[i]; g cout << "\n" << ++v[v.size (), 1] << "\n"; g catch (RANGE ERROR) f /* :::*/ g 62
63 Multiple Inheritance Ambiguity Consider the following: struct Base 1 f int foo (void); /* :::. */ struct Base 2 f int foo (void); /* :::. */ struct Derived : Base 1, Base 2 f /* :::. */ int main (void) f Derived d; d.foo (); // Error, ambiguous call to foo () g There are two ways to x this problem: 1. Explicitly qualify the call, by prexing it with the name of the intended base class using the scope resolution operator, e.g., d.base 1::foo (); // or d.base 2::foo () 2. Add a new method foo to class Derived (similar to Eiel's renaming concept) e.g., struct Derived : Base 1, Base 2 f int foo (void) f Base 1::foo (); // either, both Base 2::foo (); // or neither g 63
64 Summary Inheritance supports evolutionary, incremental development of reusable components by specializing and/or extending a general interface/implementation Inheritance adds a new dimension to data abstraction, e.g., { Classes (ADTs) support the expression of commonality where the general aspects of an application are encapsulated in a few base classes { Inheritance supports the development of the application by extension and specialization without aecting existing code: :: Without browser support, navigating through complex inheritance hierarchies is dicult: :: 64
C++ 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
Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized
Glossary 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
Software Quality Factors OOA, OOD, and OOP Object-oriented techniques enhance key external and internal software quality factors, e.g., 1. External (v
Object-Oriented Design and Programming Deja Vu? In the past: Structured = Good Overview of Object-Oriented Design Principles and Techniques Today: Object-Oriented = Good e.g., Douglas C. Schmidt www.cs.wustl.edu/schmidt/
PART-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
History OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
Polymorphism. 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)
Lecture 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
Course 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
Chapter 1: Key Concepts of Programming and Software Engineering
Chapter 1: Key Concepts of Programming and Software Engineering Software Engineering Coding without a solution design increases debugging time - known fact! A team of programmers for a large software development
Introduction 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
Object 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
Storage 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
Object-Oriented Desin and Prorammin C++ Container Classes Outline Introduction Container Class Objectives Class Library Architecture Parameterized Types Preprocessor Macros enclass void Pointer Method
Object-Oriented Programming
Object-Oriented Programming Programming with Data Types to enhance reliability and productivity (through reuse and by facilitating evolution) Object (instance) State (fields) Behavior (methods) Identity
Advanced 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
Java (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
CSCI 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
C++ Support for Abstract Data Types
Topics C++ Support for Abstract Data Types Professor Department of EECS [email protected] Vanderbilt University www.cs.wustl.edu/schmidt/ (615) 343-8197 Describing Objects Using ADTs Built-in vs.
C++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
MAS 500 Intelligence Tips and Tricks Booklet Vol. 1
MAS 500 Intelligence Tips and Tricks Booklet Vol. 1 1 Contents Accessing the Sage MAS Intelligence Reports... 3 Copying, Pasting and Renaming Reports... 4 To create a new report from an existing report...
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
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
CORBA 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
N3458: Simple Database Integration in C++11
N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München [email protected] 2012-10-22 Many applications make use of relational database to store and query their data. However,
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
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
PROBLEM 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
1.1.3 Syntax The syntax for creating a derived class is very simple. (You will wish everything else about it were so simple though.
Stewart Weiss Inheritance is a feature that is present in many object-oriented languages such as C++, Eiffel, Java, Ruby, and Smalltalk, but each language implements it in its own way. This chapter explains
CS 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
Printing Guide. MapInfo Pro Version 15.0. Contents:
MapInfo Pro Version 15.0 The purpose of this guide is to assist you in getting the best possible output from your MapInfo Pro software. We begin by covering the new print, import, and export features and
CEC225 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
Access 2007 Creating Forms Table of Contents
Access 2007 Creating Forms Table of Contents CREATING FORMS IN ACCESS 2007... 3 UNDERSTAND LAYOUT VIEW AND DESIGN VIEW... 3 LAYOUT VIEW... 3 DESIGN VIEW... 3 UNDERSTAND CONTROLS... 4 BOUND CONTROL... 4
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
Object 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
Visual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
16 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
CS193j, Stanford Handout #10 OOP 3
CS193j, Stanford Handout #10 Summer, 2003 Manu Kumar OOP 3 Abstract Superclass Factor Common Code Up Several related classes with overlapping code Factor common code up into a common superclass Examples
Java 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
Ch 7-1. Object-Oriented Programming and Classes
2014-1 Ch 7-1. Object-Oriented Programming and Classes May 10, 2014 Advanced Networking Technology Lab. (YU-ANTL) Dept. of Information & Comm. Eng, Graduate School, Yeungnam University, KOREA (Tel : +82-53-810-2497;
Introduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Objects and classes Abstract Data Types (ADT) Encapsulation and information hiding Aggregation Inheritance and polymorphism OOP: Introduction 1 Pure Object-Oriented
Object 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,
OpenCL 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
Software 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
Kyubit Business Intelligence OLAP analysis - User Manual
Using OLAP analysis features of Kyubit Business Intelligence www.kyubit.com Kyubit Business Intelligence OLAP analysis - User Manual Using OLAP analysis features of Kyubit Business Intelligence 2016, All
core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt
core. 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Volume I - Fundamentals Seventh Edition CAY S. HORSTMANN GARY
vector 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
Curriculum 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
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
The 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
Application Developer Guide
IBM Maximo Asset Management 7.1 IBM Tivoli Asset Management for IT 7.1 IBM Tivoli Change and Configuration Management Database 7.1.1 IBM Tivoli Service Request Manager 7.1 Application Developer Guide Note
Laboratory Assignments of OBJECT ORIENTED METHODOLOGY & PROGRAMMING (USING C++) [IT 553]
Laboratory Assignments of OBJECT ORIENTED METHODOLOGY & PROGRAMMING (USING C++) [IT 553] Books: Text Book: 1. Bjarne Stroustrup, The C++ Programming Language, Addison Wesley 2. Robert Lafore, Object-Oriented
Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.
The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
MapInfo Professional Version 12.5. Printing Guide
MapInfo Professional Version 12.5 Printing Guide The purpose of this guide is to assist you in getting the best possible output from your MapInfo Professional software. We begin by covering the new print,
Chapter 15: Forms. User Guide. 1 P a g e
User Guide Chapter 15 Forms Engine 1 P a g e Table of Contents Introduction... 3 Form Building Basics... 4 1) About Form Templates... 4 2) About Form Instances... 4 Key Information... 4 Accessing the Form
/* File: blkcopy.c. size_t n
13.1. BLOCK INPUT/OUTPUT 505 /* File: blkcopy.c The program uses block I/O to copy a file. */ #include main() { signed char buf[100] const void *ptr = (void *) buf FILE *input, *output size_t
Konzepte objektorientierter Programmierung
Konzepte objektorientierter Programmierung Prof. Dr. Peter Müller Werner Dietl Software Component Technology Exercises 3: Some More OO Languages Wintersemester 04/05 Agenda for Today 2 Homework Finish
Class 16: Function Parameters and Polymorphism
Class 16: Function Parameters and Polymorphism SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 16 Fall 2011 1 / 15
Visual Basic. murach's TRAINING & REFERENCE
TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 [email protected] www.murach.com Contents Introduction
C++ Crash Kurs. C++ Object-Oriented Programming
C++ Crash Kurs C++ Object-Oriented Programming Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer C++ classes A class is user-defined type
CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012
CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria
OBJECT-ORIENTED DOCUMENTATION C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria Abstract Object-oriented programming improves the reusability of software
Java 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
Create Charts in Excel
Create Charts in Excel Table of Contents OVERVIEW OF CHARTING... 1 AVAILABLE CHART TYPES... 2 PIE CHARTS... 2 BAR CHARTS... 3 CREATING CHARTS IN EXCEL... 3 CREATE A CHART... 3 HOW TO CHANGE THE LOCATION
El 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.
5 CLASSES CHAPTER. 5.1 Object-Oriented and Procedural Programming. 5.2 Classes and Objects 5.3 Sample Application: A Clock Class
CHAPTER 5 CLASSES class head class struct identifier base spec union class name 5.1 Object-Oriented and Procedural Programming 5.2 Classes and Objects 5.3 Sample Application: A Clock Class 5.4 Sample Application:
Introduction 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
Application Note C++ Debugging
Application Note C++ Debugging TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... High-Level Language Debugging... Application Note C++ Debugging... 1 Sample Code used by This Application
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Operator Overloading. Lecture 8. Operator Overloading. Running Example: Complex Numbers. Syntax. What can be overloaded. Syntax -- First Example
Operator Overloading Lecture 8 Operator Overloading C++ feature that allows implementer-defined classes to specify class-specific function for operators Benefits allows classes to provide natural semantics
SAS BI Dashboard 4.3. User's Guide. SAS Documentation
SAS BI Dashboard 4.3 User's Guide SAS Documentation The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2010. SAS BI Dashboard 4.3: User s Guide. Cary, NC: SAS Institute
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
Introducing Variance into the Java Programming Language DRAFT
Introducing Variance into the Java Programming Language A Quick Tutorial DRAFT Christian Plesner Hansen Peter von der Ahé Erik Ernst Mads Torgersen Gilad Bracha June 3, 2003 1 Introduction Notice: This
Simply Accounting Intelligence Tips and Tricks Booklet Vol. 1
Simply Accounting Intelligence Tips and Tricks Booklet Vol. 1 1 Contents Accessing the SAI reports... 3 Running, Copying and Pasting reports... 4 Creating and linking a report... 5 Auto e-mailing reports...
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
PL/SQL Overview. Basic Structure and Syntax of PL/SQL
PL/SQL Overview PL/SQL is Procedural Language extension to SQL. It is loosely based on Ada (a variant of Pascal developed for the US Dept of Defense). PL/SQL was first released in ١٩٩٢ as an optional extension
USC Marshall School of Business Marshall Information Services
USC Marshall School of Business Marshall Information Services Excel Dashboards and Reports The goal of this workshop is to create a dynamic "dashboard" or "Report". A partial image of what we will be creating
C++ 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
Tips and Tricks SAGE ACCPAC INTELLIGENCE
Tips and Tricks SAGE ACCPAC INTELLIGENCE 1 Table of Contents Auto e-mailing reports... 4 Automatically Running Macros... 7 Creating new Macros from Excel... 8 Compact Metadata Functionality... 9 Copying,
13 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.
Brent 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
PORTAL ADMINISTRATION
1 Portal Administration User s Guide PORTAL ADMINISTRATION GUIDE Page 1 2 Portal Administration User s Guide Table of Contents Introduction...5 Core Portal Framework Concepts...5 Key Items...5 Layouts...5
Code Refactoring and Defects
Code Refactoring and Defects Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us
C++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
Ad Hoc Reporting. Usage and Customization
Usage and Customization 1 Content... 2 2 Terms and Definitions... 3 2.1 Ad Hoc Layout... 3 2.2 Ad Hoc Report... 3 2.3 Dataview... 3 2.4 Page... 3 3 Configuration... 4 3.1 Layout and Dataview location...
1. 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
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Practical Example: Building Reports for Bugzilla
Practical Example: Building Reports for Bugzilla We have seen all the components of building reports with BIRT. By this time, we are now familiar with how to navigate the Eclipse BIRT Report Designer perspective,
A Guide To Evaluating a Bug Tracking System
A Guide To Evaluating a Bug Tracking System White Paper By Stephen Blair, MetaQuest Software Published: October, 2004 Abstract Evaluating a bug tracking system requires that you understand how specific
Practical Programming Methodology. Michael Buro. Class Inheritance (CMPUT-201)
Practical Programming Methodology (CMPUT-201) Lecture 16 Michael Buro C++ Class Inheritance Assignments ctor, dtor, cctor, assignment op. and Inheritance Virtual Functions Class Inheritance Object Oriented
Managing large sound databases using Mpeg7
Max Jacob 1 1 Institut de Recherche et Coordination Acoustique/Musique (IRCAM), place Igor Stravinsky 1, 75003, Paris, France Correspondence should be addressed to Max Jacob ([email protected]) ABSTRACT
Microsoft Access 2010 Overview of Basics
Opening Screen Access 2010 launches with a window allowing you to: create a new database from a template; create a new template from scratch; or open an existing database. Open existing Templates Create
