© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Visibility, Accessibility, and Information Hiding.

Slides:



Advertisements
Similar presentations
Based on Java Software Development, 5th Ed. By Lewis &Loftus
Advertisements

Programming Languages and Paradigms
Chapter 8 Scope, Lifetime and More on Functions. Definitions Scope –The region of program code where it is legal to reference (use) an identifier Three.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley STARTING OUT WITH Python Python First Edition by Tony Gaddis Chapter 9 Classes.
Chapter 7: User-Defined Simple Data Types, Namespaces, and the string Type.
Objectives In this chapter, you will:
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 11 Classes and Object- Oriented Programming.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 18 Indexing Structures for Files.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 11 Object, Object- Relational, and XML: Concepts, Models, Languages,
1 Islands : Aliasing Protection In Object-Oriented Languages By : John Hogg OOPSLA 91 Aharon Abadi.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
Chapter 9: Subprogram Control
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 6: Functions by.
Lecture 9 Concepts of Programming Languages
Abstract Data Types and Encapsulation Concepts
Chapter 6: Function. Scope of Variable A scope is a region of the program and broadly speaking there are three places, where variables can be declared:
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Interaction Design Process and Heuristics.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented Design.
CSM-Java Programming-I Spring,2005 Introduction to Objects and Classes Lesson - 1.
Beginning C++ Through Game Programming, Second Edition by Michael Dawson.
Copyright © 2012 Pearson Education, Inc. Chapter 6: Functions.
Basic Java Syntax CSE301 University of Sunderland Harry R Erwin, PhD.
Object-Oriented Programming (OOP). Implementing an OOD in Java Each class is stored in a separate file. All files must be stored in the same package.
Low-Level Detailed Design SAD (Soft Arch Design) Mid-level Detailed Design Low-Level Detailed Design Design Finalization Design Document.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13: Introduction to Classes.
Basic Semantics Associating meaning with language entities.
Copyright © 2012 Pearson Education, Inc. Chapter 6: Functions.
Programming Logic and Design Using Methods. 2 Objectives Review how to use a simple method with local variables and constants Create a method that requires.
© 2006 Pearson Addison-Wesley. All rights reserved How to Design a Supplier 1) Determine the public methods. (Don’t forget the constructor(s).) 2)
ADTs and C++ Classes Classes and Members Constructors The header file and the implementation file Classes and Parameters Operator Overloading.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Advanced UML Class Diagrams.
An Object-Oriented Approach to Programming Logic and Design Chapter 3 Using Methods and Parameters.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
Topics AliasesSubprograms Generics & Configurations.
Object Oriented Analysis and Design Class and Object Diagrams.
Programming Perl in UNIX Course Number : CIT 370 Week 6 Prof. Daniel Chen.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 1 Chapter Array Basics.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7: Introduction to Classes and Objects Starting Out with C++ Early.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design Second Edition by Tony Gaddis.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
ECE 103 Engineering Programming Chapter 31 C Scopes Herbert G. Mayer, PSU CS Status 8/1/2015 Initial content copied verbatim from ECE 103 material developed.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 6: Functions.
Chapter 1 C++ Basics Review (Section 1.4). Classes Defines the organization of a data user-defined type. Members can be  Data  Functions/Methods Information.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
© 2004 Pearson Addison-Wesley. All rights reserved April 10, 2006 Inheritance (part 2) ComS 207: Programming I (in Java) Iowa State University, SPRING.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design Second Edition by Tony Gaddis.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and.
Programming Logic and Design Fifth Edition, Comprehensive Chapter 7 Using Methods.
1 Chapter 8 Scope, Lifetime, and More on Functions CS185/09 - Introduction to Programming Caldwell College.
Chapter 5 Introduction to Defining Classes Fundamentals of Java.
OOP: Encapsulation &Abstraction
Visibility, Accessibility, and Information Hiding
Abstract Data Types and Encapsulation Concepts
Objectives In this chapter, you will:
Enumeration Type Data type: a set of values with a set of operations on them Enumeration type: a simple data type created by the programmer To define an.
Examples of Classes & Objects
How to Design Supplier Classes
Lecture 9 Concepts of Programming Languages
Abstract Data Types and Encapsulation Concepts
Abstract Data Types and Encapsulation Concepts
Classes & Objects: Examples
Objectives In this chapter, you will:
Scope Rules.
Lecture 9 Concepts of Programming Languages
Presentation transcript:

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Visibility, Accessibility, and Information Hiding

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 2 Objectives  To explain how visibility rules make program entities accessible through their names  To show how references and aliases can extend access beyond visibility  To emphasize the importance of limiting visibility and not extending access for hiding information  To introduce cases where extending access is permissible

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 3 Topics  Names and visibility  References and aliases  Accessibility and information hiding  Heuristics for hiding information  Violating information hiding practices

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 4 Entities, Names, and Visibility A program entity is anything in a program that is treated as a unit. A name is an identifier bound to a program entity. A program entity is visible at a point in a program text if it can be referred to by name at that point; the portion of a text over which an entity is visible is its visibility. A program entity is anything in a program that is treated as a unit. A name is an identifier bound to a program entity. A program entity is visible at a point in a program text if it can be referred to by name at that point; the portion of a text over which an entity is visible is its visibility.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 5 Visibility Example File: package1/PublicClass.java package package1; public class PublicClass{ private String privateAttribute; String packageAttribute; public void method() { String localVariable;... // point A... }... // point B... } // end package1.PublicClass File: package1/PackageClass.java package package1; class PackageClass{... // point C... } // end package1.PackageClass File: package2/PackageClass.java package package2; import package1.*; class PackageClass{... // point D... } // end package2.PackageClass

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 6 Types of Visibility  Local—Visible only within the module where it is defined  Non-local—Visible outside the module where it is defined, but not visible everywhere in a program  Global—Visible everywhere in a program  An entity is exported from the module where it is defined if it is visible outside that module.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7 Object-Oriented Feature Visibility  Private—Visible only within the class where it is defined A type of local visibility  Package—Visible in the class where it is defined as well as classes in the same package or namespace A form of non-local visibility  Protected—Visible in the class where it is defined and all sub-classes A form of non-local visibility  Public—Visible anywhere the class is visible A form of non-local or global visibility

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8 Accessibility A program entity is accessible at a point in a program text if it can be used at that point.  A program entity is accessible wherever it is visible.  A program entity may also be accessible where it is not visible.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 9 Variables Variables have attributes: Name Value Address A variable is a programming language device for storing values.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 10 References A reference is an expression that evaluates to an address where a value is stored.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 11 Aliases An alias is a variable with the same address as another variable.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 12 Extending Access Beyond Visibility  References and aliases can make variables accessible where they are not visible Passing a reference as an argument Passing an argument by reference (aliasing) Returning a reference from a sub-program  This practice is extending access beyond visibility Generally it is a bad practice

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 13 Information Hiding and Access  The key technique for hiding information is to restrict access to program entities as much as possible. Limiting visibility—Use scope and visibility markers to restrict visibility Not extending access—Avoid using references and aliases to extend visibility  A defensive copy is a copy of an entity held by reference passed to or returned from another operation.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 14 Information Hiding Heuristics 1 Limit visibility. Make program entities visible in the smallest possible program region. Restrict the scope of declarations to the smallest possible program region. Make attributes at least protected and preferably private. Make helper operations at least protected and preferably private. Avoid global visibility. Avoid package visibility.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 15 Information Hiding Heuristics 2 Don’t extend access. Don’t initialize attributes with references passed to the class—make defensive copies instead. Don’t pass or return references to attributes—pass or return defensive copies instead. Don’t pass parameters by reference. Don’t make aliases

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 16 Exceptions Two cases when access may be extended beyond visibility: Modules must share an entity to collaborate  Example: a shared queue Some other design goal is of greater importance than information hiding  Example: performance constraints

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 17 Summary  Program entities are usually accessible through their names by being visible in various parts of a program text.  Entities may also be accessed through references or aliases.  Information hiding dictates that visibility be limited and that access not be extended beyond visibility.  Occasionally this rule can be violated to achieve other goals.