Encapsulation CMSC 202. Types of Programmers Class programmers – Developers of new classes – Goal: Expose the minimum interface necessary to use a new.

Slides:



Advertisements
Similar presentations
Road Map Introduction to object oriented programming. Classes
Advertisements

Evan Korth New York University Computer Science I Classes and Objects Professor: Evan Korth New York University.
ECE122 L6: Problem Definition and Implementation February 15, 2007 ECE 122 Engineering Problem Solving with Java Lecture 6 Problem Definition and Implementation.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
1 Fall 2007ACS-1903 Chapter 6: Classes Classes and Objects Instance Fields and Methods Constructors Overloading of Methods and Constructors Scope of Instance.
Classes and Class Members Chapter 3. 3 Public Interface Contract between class and its clients to fulfill certain responsibilities The client is an object.
Writing Classes (Chapter 4)
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
COP INTERMEDIATE JAVA Designing Classes. Class Template or blueprint for creating objects. Their definition includes the list of properties (fields)
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
ECE122 Feb. 22, Any question on Vehicle sample code?
JAVA Classes Review. Definitions Class – a description of the attributes and behavior of a set of computational objects Constructor – a method that is.
CSSE501 Object-Oriented Development. Chapter 4: Classes and Methods  Chapters 4 and 5 present two sides of OOP: Chapter 4 discusses the static, compile.
OOP in Java : © W. Milner 2005 : Slide 1 Java and OOP Part 2 – Classes and objects.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
CSC1401 Classes - 2. Learning Goals Computing concepts Adding a method To show the pictures in the slide show Creating accessors and modifiers That protect.
Chapter 10 Defining Classes. The Internal Structure of Classes and Objects Object – collection of data and operations, in which the data can be accessed.
Session 7 Methods Strings Constructors this Inheritance.
COP INTERMEDIATE JAVA Designing Classes. Class Template or blueprint for creating objects. Their definition includes the list of properties (fields)
AP Computer Science A – Healdsburg High School 1 Unit 9 - Why Use Classes - Anatomy of a Class.
Chapter 3 Introduction to Classes and Objects Definitions Examples.
Classes Modeling the Object. Objects model the world Classes are programmer defined types that model the parts of a system Class serve as blueprints for.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved. 1 Chapter 9 Objects and Classes.
CIS 270—Application Development II Chapter 8—Classes and Objects: A Deeper Look.
Lab 4 - Variables. Information Hiding General Principle: – Restrict the access to variables and methods as much as possible Can label instance variables.
CMSC 202 Java Classes and Object 2nd Lecture. Aug 6, Stack and Heap When your program is running, some memory is used to store local variables.
More on Objects Mehdi Einali Advanced Programming in Java 1.
Peyman Dodangeh Sharif University of Technology Spring 2014.
Chapter 4Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapters 4 and 5: Excerpts l Class and Method Definitions l Information.
1 Static Variable and Method Lecture 9 by Dr. Norazah Yusof.
Method OverloadingtMyn1 Method overloading Methods of the same name can be declared in the same class, as long as they have different sets of parameters.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Introduction To Objects Oriented Programming Instructor: Mohammed Faisal.
Defining Classes I Part B. Information hiding & encapsulation separate how to use the class from the implementation details separate how to use the class.
AP Java Ch. 4 Review Question 1  Java methods can return only primitive types (int, double, boolean, etc).
Topics Instance variables, set and get methods Encapsulation
5.1 Basics of defining and using classes A review of class and object definitions A class is a template or blueprint for an object A class defines.
Dale Roberts Object Oriented Programming using Java - Getters and Setters Dale Roberts, Lecturer Computer Science, IUPUI
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 10 Inheritance and Polymorphism.
CPSC 252 ADTs and C++ Classes Page 1 Abstract data types (ADTs) An abstract data type is a user-defined data type that has: private data hidden inside.
Comp1004: Building Better Objects II Encapsulation and Constructors.
COMP Information Hiding and Encapsulation Yi Hong June 03, 2015.
Interfaces CMSC 202. Public Interfaces Objects define their interaction with the outside world through the their public interface. A class' public interface.
Lecture 9: Object and Classes Michael Hsu CSULA. 2 OO Programming Concepts Object-oriented programming (OOP) involves programming using objects. An object.
Classes CS 162 (Summer 2009). Parts of a Class Instance Fields Methods.
Lecture 3: Introduction to Object and Classes Michael Hsu CSULA.
Lecture 3: Introduction to Object and Classes Michael Hsu CSULA.
Object Oriented Programming. Constructors  Constructors are like special methods that are called implicitly as soon as an object is instantiated (i.e.
Lecture 3: Introduction to Object and Classes
Classes and Objects: Encapsulation
Methods Attributes Method Modifiers ‘static’
Chapter 3: Using Methods, Classes, and Objects
Lecture 4 D&D Chapter 5 Methods including scope and overloading Date.
Advanced Programming in Java
Classes and Objects 2nd Lecture
Classes and Objects: Encapsulation
Classes and Objects Encapsulation
Encapsulation and Constructors
Java Classes and Objects 3rd Lecture
Announcements Program 2 is due tomorrow by noon Lab 4 was due today
Defining Classes and Methods
Chapter 9 Objects and Classes
OO Programming Concepts
CMSC 202 Encapsulation Version 9/10.
Corresponds with Chapter 5
ITE “A” GROUP 2 ENCAPSULATION.
Classes and Objects Systems Programming.
CSG2H3 Object Oriented Programming
Chapter 5 Classes.
Presentation transcript:

Encapsulation CMSC 202

Types of Programmers Class programmers – Developers of new classes – Goal: Expose the minimum interface necessary to use a new class – Implementation (code) is “hidden” Client programmers – Write code (the client program) that uses existing classes 2Version 9/12

Encapsulation Combining data and operations into a single entity (class) Providing appropriate access control Achieved through information hiding/abstraction 3 Client Program Pre-coded Class X Pre-coded Class Y Version 9/12 Class X interface Class Y interface

The Value of Encapsulation Client programmers do not need to know how the class is implemented, only how to use it. Class implementation may be changed with no impact on code that uses the class. 4Version 9/12 Client Program Pre-coded Class X Class X interface Modified Class X Modified Class X Class X interface X

Class Interface Instance variables – name – what it represents – type Methods – name – what it does (not how) – pre & post-conditions – parameters – return value Version 9/125 public String make; // car make public String model; // car model public int year; // car year /* Resets a car’s make * Preconditions: New make is non-null * Postconditions: Car’s make is reset * Parameters: Car’s new make * Returns: Nothing */ public void getMake(String newMake )

Visibility Modifiers Provide access control to class – instance variables – constants – methods public – directly accessible by client code private – accessible only by methods within the class (class scope) Other – later 6Version 9/12 Reference:

Private Instance Variables Example 7 public class Car { public String model; public String make; private int year; public void setYear(int newYear){ year = newYear; } Version 9/12 public class CarDemo { public static void main(String[] args) { Car car = new Car(); car.make = “Toyota"; // OK car.model = “Prius"; // OK car.year = 2008; // compiler error car.setYear(2008); // OK }

Private Instance Variables: Summary Only accessible within the class Are not directly accessible by a client program Hide implementation details, promoting encapsulation Good programming practice: – Label all instance variables as non-public (typically, private). Bottom line: – The class should have complete control over how/when/if the instance variables are changed or accessed. 8Version 9/12 Reference:

Accessors and Mutators Accessor method (getter) – Retrieves the value of a private instance variable – Conventions: Start the method name with get. Start edge case for booleans with is. Mutator method (setter) – Changes the value of a private instance variable. – Convention: Start the method name with set. Gives the client program indirect access to the instance variables. 9Version 9/12

Why Accessors and Mutators? Accessors – The class implementer decides which instance variables will have accessors, and in what form they will be returned. Mutators – validate the new value of the instance variable, and – decide whether or not to actually make the requested change. 10Version 9/12

Example Car Accessor and Mutator 11 public class Car { private int year; // 4-digit year between 1000 and 9999 private String vin; // Vehicle identification number // Accessor to return the vin member public String getVin() { return vin; } // Mutator to change the year member public boolean setYear(int newYear) { if(newYear >= 1000 && newYear <= 9999) { year = newYear; return true; } return false; } //... } Version 9/12

Accessor/Mutator Caution In general, do not provide accessors and mutators for all private instance variables. Bottom line: Limit the class interface. 12Version 9/12

Private Methods Have class scope Cannot be invoked by a client program Used as “helper” methods to support top- down implementation of a public method. 13Version 9/12 Reference:

Private Method Example 14 public class Car { private int year; // 4-digit year between 1000 and 9999 // Helper method – class scope private boolean isValidYear(int year) { return(year >= 1000 && year <= 9999); } // Mutator to change the year member public boolean setYear(int newYear) { if(isValidYear(newYear)) { year = newYear; return true; } return false; } //... } Version 9/12

Encapsulation Summary Combine methods and data in a single class. Use private instance variables for information hiding. Minimize the class’s public interface. 15 Keep it secret, keep it safe Version 9/12

Method Overloading

Method Names Different classes can define a method with the same name. Example: Java can determine which method to call based on the type of the calling object. 17 Cat myCat = new Cat(); Dog myDog = new Dog(); System.out.println(myCat); System.out.println(myDog); Version 9/12

Method Overloading When two or more methods in the same class have the same name Example: 18Version 9/12 public boolean setStyle(String make, String model) public boolean setStyle(String make) Reference:

Car Class — Overloaded setStyle 19 public class Car { //... private String model; private String make; public boolean setStyle(String make, String model) { if(isValidMake(make) && isValidModel(model)) { this.make = make; this.model = model; return true; } return false; } public boolean setStyle(String make) { if(isValidMake(make)) { this.make = make; return true; } return false; } private boolean isValidMake(String make) { return make != null && !make.equals(""); } private boolean isValidModel(String model) { return model != null && !model.equals(""); } Version 9/12

CarDemo Class Version 9/1220 How does Java know which setStyle method to call? public class CarDemo { public static void main(String[] args) { Car car = new Car(); car.setStyle("Mazda"); System.out.println(car); car.setStyle("Audi", "A8"); System.out.println(car); }

Method Signature A method is uniquely identified by its – name and – parameter list (types and order). This is known as its signature. Examples … 21 public boolean setStyle(String make, String model) public boolean setStyle(int year, String make, String model) public boolean setStyle(String make, String model, String color) public boolean setStyle(int year, String color) public boolean setStyle(String make) Version 9/12 Reference:

Return Type is Not Enough Attempt to overload Car’s setStyle() method by using different return types: This is NOT valid method overloading. The method return value can be ignored. 22 public void setStyle(String make) { /* code here */ } public boolean setStyle(String model) { /* code here */ } car.setStyle("Mazda"); Version 9/12

Common Problem Type coercion can confuse the compiler: So now, The Java compiler can’t decide whether to – promote 7 to 7.0 and call the first version of calculateAverage, or – promote 5 to 5.0 and call the second. Solution: Cast the arguments so that they match one of the signatures. 23 //version 1 public double calculateAverage(int a, double b) { /* code */ } //version 2 public double calculateAverage(double a, int b) { /* code */ } MathUtils math = new MathUtils(); math.calculateAverage(5, 7);// two int parameters Version 9/12 math.calculateAverage(5, (double)7); OR Math.calculateAverage((double)5, 7);