Final Exam
Principles of December 6 – 10:30 AM Can use Computer Science I – Textbook – One (double-sided) page (8.5 x 11”) of notes Can’t use – Any other materials (lecture notes/lab work/etc) – Computer/calculator
Prof. Nadeem Abdul Hamid Thursday lab CSC 120A - Fall 2004 – Work on homework 9 problem Lecture Unit 14 – Ask questions, review for final – Course evaluations Review
CSC 120A - Berry College - Fall 2004 2
Algorithms and Computer Science Blind Men and the Elephant
CSC 120A - Berry College - Fall 2004 3 CSC 120A - Berry College - Fall 2004 4
Designing Algorithms/Programs Object-Oriented Design Concepts
Break large tasks into smaller, easier, more View a task to be accomplished as a bunch concrete subtasks (functional of entities (objects/agents) interacting to decomposition) solve the problem Build abstractions – simplifications/elimination of irrelevant details Programs are a collection of interacting Abstractions should be well-encapsulated objects that communicate with (call methods Encapsulation of/send messages to) each other – How an abstract is implemented “behind-the- scenes” should not affect other pieces of the Objects are a combination of data and design that use the abstraction associated operations that is supported upon – Abstraction should provide a well-defined that data interface
CSC 120A - Berry College - Fall 2004 5 CSC 120A - Berry College - Fall 2004 6
1 Classes and Objects Constructors
A class describes the data (fields) and operations Class defines one or more constructors for initializing new (methods) of its objects objects of that class – Every object belongs to some class – If you don’t provide a constructor, Java provides a default constructor with no arguments: An object contains data (instance variables/fields) • sets numeric/character fields to zero, booleans to false, object representing state, and instance methods, which are references to null the things it can do Purpose of a constructor is to create an object in a valid state – Class may also contain its own data (class variables/static First thing a constructor does is call its superclass’ constructor fields) and class methods, denoted by the keyword “static” – If you don’t explicitly do this, using “super(…)”, then Java Classes form an inheritance hierarchy (tree), with implicitly invokes (calls) the default constructor of the superclass Object at the root Constructor for a class can call another constructor for the – Every class, except Object, has exactly one immediate same class using “this(…)” as the first statement in the superclass, which may be denoted by the keyword constructor “extends” – Avoids duplicated blocks of code in constructors – Subclasses inherit all the (non-private) fields and methods of superclasses (except the constructors)
CSC 120A - Berry College - Fall 2004 7 CSC 120A - Berry College - Fall 2004 8
Classes and Objects (cont.) Using Objects and Casting The “instanceof” operator tests whether an object is an instance of a class Declare object variables just like other variables – Returns true if the object is the class or any subclass –
Access Scope
Fields (instance/class variables) and methods are accessed by Scope of an identifier (name) is the part of a class/file where it name is “visible” or legal to use Three dimensions to accessing name – Variable declared anywhere in a class can be seen everywhere in – Namespace a class – Scope – Scope of method’s parameters is the entire method – Access modifiers – Scope of a variable declared in a block (indicated by braces, { }) extends from the declaration to the closing brace Java has six different namespaces: – Scope of a variable declared in the initialization part of a for loop – Package names, type names, field names, method names, local is the entire body of the loop variable names (including parameters), and labels Class variables and methods (indicated by “static”) can be – Identical names of different spaces do not conflict- e.g. a method may be named the same as a local variable – but it is best to avoid used anywhere within the class reusing names like this Instance variables (fields) and methods can be used anywhere To refer to an instance feature (field/method) in a different except in static methods object, use the syntax “otherObject.name” Within an instance method, the keyword this refers to the To refer to a class (static) feature in a different class, use the object on which the method is currently executing syntax “OtherClass.name” – When a field and a local variable have the same name, the name refers to the local varible; use the prefix this. to refer to the field
CSC 120A - Berry College - Fall 2004 11 CSC 120A - Berry College - Fall 2004 12
2 Access Privileges Referring to Names
public: can be accessed from anywhere Using fully qualified name: protected: can be accessed from any other – java.io.BufferedReader inFile = … class in the same package (folder) or from any subclass Or import a specific class or all (using *) package (default): can be accessed from any classes from a given package at the top of other call in the same package the file and then just use the name private: cannot be accessed from outside the – import java.io.*; class … BufferedReader inFile = … – But private fields and methods can be accessed by other objects of the same class
CSC 120A - Berry College - Fall 2004 13 CSC 120A - Berry College - Fall 2004 14
Methods Executing Methods A method is a named, executable chunk of code – All executable statements must be in methods (one or two Executing a method means to cause its statements to exceptions, which we won’t mention here) be performed upon a given object Method has a signature: name and number and – Also referred to as “calling a method upon an object”, types of its parameters “invoking a method on an object”, “sending a message to an object” Method has a return type (not part of its signature) Method invocation consists of – If the return type is other than void, the method must return a value of the specified type in every possible case – A reference to the object (often by name) or class – A dot Method may define local variables (scope, etc.) – The name of the method – Concepts of static/public/private/etc. do not apply to local – Zero or more “arguments” enclosed in parentheses variables – Local variables have undefined values until they are When a method call occurs, the values of the initialized arguments are copied into the corresponding parameters of the method Every method must have a unique signature within a class Upon completion, the result of a method call expression is its return value – Methods in other classes (including sub/superclasses) may have the same signatures CSC 120A - Berry College - Fall 2004 15 CSC 120A - Berry College - Fall 2004 16
Polymorphism Overriding Methods
A class declares a method with the same signature “Having many forms” as an inherited method Polymorphism in Java – Return type of an overridden method must be the same too – Ability to assign objects to superclass variables – Overriding method may not throw more exceptions than those thrown by the overridden method – Overriding methods When the method is invoked on an object (or class), the overriding method is the one used, even if the Overloading methods object is being reference through a variable of a – When a single class declares two or more superclass methods with the same name but different Can still invoke the superclass’ version of the signatures method (from inside the class) using – When a method call is made, the method with “super.
3