Unformatted text preview:

ClassesSlide 2Abstraction : Equivalence RelationsSpecification of Data Types: MotivationSpecification of Data Types: DetailsADT Table (symbol table/directory)ImplementationsJava approach to metaclass benefitsClass as module and typeExample : class PointFeature Classification by RoleFeature Classification by ImplementationUniform Access principleObject-Oriented Style of ComputationSlide 15Composition : Client and SupplierFeature CallsSelective Export and Information HidingFunction In-lining in C++GenericitySlide 21Slide 22ceg860 (Prasad) L7Class 1Classesceg860 (Prasad) L7Class 2•Class :: Instance (Object) Static structure vs Run-time structure (Analogy -- a statue :: Lincoln Memorial)•Class :: Abstract Data Type A class is an ADT equipped with a possibly partial implementation.•Class :: Metaclass A metaclass is a class whose instances are classes. (Useful for manipulating class representations at run-time by interpreters, browsers, etc.)ceg860 (Prasad) L7Class 3Abstraction : Equivalence Relations–Computability•Recursive vs Non-recursive–Semantics•Behavioral Equivalence–Resource-independent interchangeability»Performance aspect irrelevant for “correctness”–E.g., Groups, Fields, Sorting, UNIX, etc–Complexity (Algorithms)•Time and Space requirements–Big-Oh (Worst-case Analysis)–NP-hard vs Polynomial-timeceg860 (Prasad) L7Class 4Specification of Data Types: Motivation•Precise and unambiguous description.•Sound and complete description.•Avoids over-specification.•Spec: Flexible enough to accommodate all possible implementations.•Impl.: Constraining enough to exploit representation details for efficiency.ceg860 (Prasad) L7Class 5Specification of Data Types: Details Type : Values + Operations Specify Syntax Semantics Signature of Ops Meaning of Ops Model-based Axiomatic(Algebraic) Description in terms of Give axioms satisfied standard “primitive” data types by the operationsceg860 (Prasad) L7Class 6ADT Table (symbol table/directory)empty : Tableupdate : Key x Info x Table TablelookUp: Key x Table nfolookUp(K,em pty) = error(Use of variable) (Alternative : Use of Preconditions)lookUp(K,upda te (Ki, I, T)) = if K = Ki then I else lookUp(K,T)(“last update overrides the others”)ceg860 (Prasad) L7Class 7Implementations–Array-based–LinearList-based–Tree-based•Binary Search Trees, AVL Trees, B-Trees etc–HashTable-based•These exhibit a common Table behavior, but differ in performance aspects.•Correctness of a client program is assured even when the implementation is changed.ceg860 (Prasad) L7Class 8•To make available certain features to all classes, Java defines a root class (class Object) with those features. E.g., Thread support (locks), cloning, equality check, string representation, etc•Certain class operations are given special status. E.g., creation and initialization of an object is incorporated via constructors.•Meta-programmingMeta-programming is achieved through appropriate libraries supporting Reflection and Introspection. E.g., In Java 1.1, package java.lang.reflect. Java approach to metaclass benefitsceg860 (Prasad) L7Class 9Class as module and type–Module (unit of software decomposition)•Syntactic: Only affects the form of software text, not what the software can do. Separately compilable.–Type (static description of dynamic objects)•Semantic: Influences execution of a software system by defining objects manipulated at run-time. The facilities provided by a class, viewed as a module, are precisely the operations on instances of the class.ceg860 (Prasad) L7Class 10Example : class Point•Features/Members –Attributes/Fields (represented using memory)–Routines/Methods (represented using computation)real x-coord, y-coord; real radius, angle;real distance(Point);void translate(real x,y);ceg860 (Prasad) L7Class 11FeatureFeature Classification by RoleProcedureProcedureFunctionFunctionFunctionFunctionAttribute Attribute (Field)(Field)No result Returns resultArguments No ArgumentsComputation MemoryRoutineRoutineceg860 (Prasad) L7Class 12FeatureFeature Classification by ImplementationComputation MemoryProcedureProcedureFunctionFunctionNo resultResultRoutineRoutine(Method)(Method)AttributeAttribute (Field)(Field)ceg860 (Prasad) L7Class 13Uniform Access principle•A client should be able to access a property (feature) of an object using a single notation whether the property is implemented by memory or by computation.–EiffelEiffel : 0-ary routine f and attribute f have the same syntax. Attributes cannot be directly assigned.–JavaJava: 0-ary method syntax is f() (not f). In SmallTalkSmallTalk/Java Beans,Java Beans, a field is accessed via getF() and/or setF(valueType) methods.ceg860 (Prasad) L7Class 14Object-Oriented Style of Computation•Single Target Principle–Every operation is relative to a certain object.–E.g., pt1.distance(pt2)•Current Instance–May be implicit, or referred to explicitly using a keyword such as this (Java/C++), self (Self), Current (Eiffel), etc.•Module-Type Identificationceg860 (Prasad) L7Class 15double distance( Point p ) { if (p =/= this) { return Math.sqrt( (x - p.x) * (x - p.x) + (y - p.y) * (y - p.y) ); } else { return 0; }}ceg860 (Prasad) L7Class 16 Composition : Client and Supplier•A class C which contains a declaration of the form S x is said to be a client of S. S is said to be a supplier (server) of C.•x may be an attribute or a function of C, or a local entity or argument of a routine of C.ceg860 (Prasad) L7Class 17Feature Calls•Qualified calls–x.f or x.f()–x.f(a,b,…)•Unqualified calls–f or f()–f(a,b,…)Equivalently, –this.f or this.f()–this.f(a,b,…)•Operators•infix –associativity•prefix–Operator definitions supported in order to be consistent with the standard mathematical notations.– A * B,  5, etc.ceg860 (Prasad) L7Class 18Selective Export and Information Hiding•EiffelEiffel has a general mechanism to export a feature to designated clients and their proper descendants.•JavaJava and C++C++ support three levels: –public : all clients.–private : (all instances of) current class. –protected : all subclasses.–Default : package wide visibility.ceg860 (Prasad) L7Class 19 Function In-lining in C++ –Interface file ( “.h” extension ).•Contains prototype declarations, and (short)


View Full Document

Wright CEG 860 - CEG 860 Classes

Documents in this Course
Load more
Download CEG 860 Classes
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view CEG 860 Classes and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view CEG 860 Classes 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?