terms and rules professor evan korth new york university (all rights reserved)

30
Terms and Rules Professor Evan Korth New York University (All rights reserved)

Post on 21-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Terms and Rules

Professor Evan Korth

New York University

(All rights reserved)

Class

• The main building blocks of Java programs.• Defines objects of the same type. Like a blueprint.• Every .java file has one or more classes. Exactly one

of the classes must be a public class.– That class must have the same name as the .java file.

• If the class has an method called main(), execution can begin in that class. (Therefore, you can test a class by adding a main method to it.)

• If there are other classes in the file, they cannot be public classes.

Class modifiers

• No modifier (default) means the class is visible in the package in which it is declared.

• Public means it is visible to everything.

• There are two others (final and abstract) which we will discuss later in the semester.

Encapsulation

• Encapsulation refers to the the process of combining elements to create a new entity.

• You encapsulate the properties (attributes) and behaviors (activities) of an entity into a class.

• Encapsulation also enables us to hide the implementation of a class to other classes (information hiding).

Objects

• An object is an instance of a class. • If we think of a class as a blueprint, an object is

one model created from that blueprint.• You can create any number of objects from one

class.• An object is distinctly identified by an object

reference (except for anonymous objects).

Declaring object references

• In order to reference an object, we need an object reference variable.

• To declare an object reference variable we use the syntax:ClassName objectReferenceName;

• The above statement creates a variable objectReferenceName which can reference a Classname object. It does NOT create an object.

Instantiating objects

• In order to create an object, we use the new keyword along with a constructor for the class of the object we wish to create.

• To refer to the object, we “point” an object reference variable to the new object.objectReferenceName = new Constructor();

• The decalration and instantiation can be combined as follows:ClassName objectReferenceName = new Constructor();

* More on constructors soon

Anonymous objects

• An object without a reference is called an anonymous object.

• It is created, used and immediately marked as garbage.

members

• A class declaration includes members of the class.• A member can be either a data member or a

method member.• A data member (AKA field) is used to define state

(attributes or properties) of the entity.• A method member is used to define the behaviors

of the entity.

Data members

• Data members can be a primitive type or a reference to another object.– Primitive types are integer types, float types and char,

Boolean. (Note: an int is not the same as an object of type Integer)

• A data member can be either an instance variable or a static variable (also known as a class variable).

• The scope of a data member is the entire class it is declared in no matter where within the class it is declared.

Default values for data members

• 0 for all numeric type variables (including float types and integer types)

• \u0000 for char variables• null for reference variables• False for Boolean type variables

• Note: No default values for method variables.

Static variable (AKA class variable)• A static variable has only one value no matter how many

objects are instantiated from a class. The value is shared by all instances of the class.

• A static variable does not need an instance of the class in order to be accessed.

• You can access a static variable either with ClassName.varName (better style), or objectReference.varName notation.

• For static variables, every object of the class refers to the same memory location.

• Static variables can be accessed by static methods OR instance methods.

• The memory for a static variable is allocated when the class is loaded into memory.

Instance variables

• An instance variable has a unique value for each object of that class. – This does not mean that two objects cannot have the

same value; it does mean that those values will be stored separately in memory.

• You can access an instance variable only with objectReference.varName notation.

• No memory is allocated until an object is instantiated.

• Can be accessed by instance methods only.

Data modifiers• No modifier (default) means the data is visible in the

package in which it is declared.• Public means the data is visible to everything.• Private means the data is visible only within the class

in which it is defined.– Trying to access private data from another class will result in

a compile time error.

• Static means it is a static variable. Static variables can use other modifiers as well.

• Final means the variable cannot be changed.• There are two others (protected and abstract) which we

will discuss later in the semester.• There are still others which we will not discuss this

semester.

Method members

• Methods are used to define the behaviors of an object.

• They can be overloaded. – Having more than one method in a class with

the same name is referred to method overloading.

– Each of the methods must have a different method signature. That is, they must have different argument lists.

Local method variables

• Do not automatically get initialized.– Using them without initializing them is a

compilation error.

• Cannot have visibility modifiers.

• The scope of a local method variable starts where it is declared. It ends at the end of the block where it was declared.

Method modifiers• No modifier means the method is visible in the package

in which it is declared.• Public means the method is visible to everything.• Private means the method is visible only within the

class in which it is defined.– Trying to call a private method from another class will result

in a compile time error.

• Static means it is a static method. Static methods can use other modifiers as well.

• There are three others (final, protected and abstract) which we will discuss later in the semester.

• There are still others which we will not discuss this semester.

Static methods (AKA class methods)

• Can be called without an instance of the method.• All the methods in the Math class are static

methods which is why we can call them without a Math object. In fact we cannot instantiate an object of the Math class.

• You can call a static method either with ClassName.method (args) (better style), or objectReference.method (args) notation.

Instance methods

• Can only be called after an object is instantiated.

• You can call an instance method only with the objectReference.method (args) notation.

• An instance method acts on the specific instance for which it has been called.

Constructors

• Constructor are special methods that instantiate objects.• A constructor is invoked with the new operator.• A constructor:

– should initialize the instance variables;– can also modify static variables;– can also do anything else but is usually used just for the

above.

• A constructor does not have a return type.• A constructor’s identifier (name) is the same as the

class it constructs.

Constructors continued• Constructors can be overloaded but each one must

have its own signature.• A constructor with fewer arguments can call a

constructor with more arguments.• A constructor with no arguments is called a

default constructor.– If no constructor is defined, a default constructor is

automatically supplied. Variables are initialized to their default values.

– If one constructor is explicitly defined, the automatic default constructor is no longer available. In such case, if you want a default constructor, you must define it yourself.

Accessor methods

• When a data member is declared to be private, we still need a way to refer to that data. A method used to change or retrieve a private data item is referred to as an accessor method.

• Two kinds of accessor methods are the get method and the set method.

Get methods

• A method that is used to retrieve the value of a data object is referred to as a get method.

• Also known as a getter.• Get method header should look like this:

public returnType getPropertyName ()

• It may just return a data field or it may calculate the value. Remember information hiding.

Predicate methods

• A get method that returns a Boolean value should have a header like this:

public boolean IsProperty ()

• It can simply return a Boolean data field or it can use a Boolean formula to calculate it’s data. Remember, information hiding!

Set methods

• Methods used to set or change the value of a data method are referred to as set methods.

• Also known as setters and mutators.

• Header of set method will look like this:public void setProp (propType)

Garbage collection• When an object is no longer referenced by any

reference variable, that object is referred to as garbage.• Java automatically tracks garbage objects and returns

the memory to the operating system when the garbage collector runs.

• We do not have direct control over when the garbage is collected.

• We can suggest to the compiler to collect garbage but it is not guaranteed that it will run.

• To suggest garbage collection we make the following method call:– System.gc();

Keyword this• The keyword this is used with a class to refer to

the specific instance of the class that is being used.• A variable in a class’ method that has the same

name as a field will “shadow” the field. You can access the field using the this keyword.

• This (args) in a constructor will invoke another constructor of that class.– If you call another constructor from a constructor, it

must be the first line in the calling constructor.

• You cannot use the this keyword in static methods. (why?)

Passing variables to methods

• All variables in Java are passed using call by value. However, since object variables are really references to objects, passing an object is simulated pass by reference.– Objects passed to a function and modified by that

function will have the changes reflected in the calling function.

– Primitive variables passed to a function and modified by that function will NOT have the changes reflected in the calling function.

Principle of least privilege

• You should pick the modifier that allows the least privilege for other classes while allowing your code to do what it needs to do.

• This helps reduce debugging time by localizing potential problem areas.

Exam

• Our only midterm will be given the week of October 20th

– Either the 21st or the 23rd