Presentation is loading. Please wait.

Presentation is loading. Please wait.

Encapsulation & Abstraction

Similar presentations


Presentation on theme: "Encapsulation & Abstraction"— Presentation transcript:

1 Encapsulation & Abstraction
ATS Application Programming: Java Programming Encapsulation & Abstraction 3.1 Encapsulation and Abstraction Defining Abstraction Levels of Abstraction Class as Abstraction Defining a Java Class Instantiating a Class Class Members Class Modifiers Member Modifiers Accessibility Scope Defining Encapsulation Principles of Encapsulation Encapsulating a Class Setters & Getters Constructors © Accenture All Rights Reserved Course Code # Z16325

2 ATS Application Programming: Java Programming
Objectives 3.1 Encapsulation and Abstraction Define abstraction Identify levels of abstraction Understand that a class is a form of abstraction Define a Java class Learn how to create objects by instantiating their class Identify class members Identify and define each modifier applicable to a class Identify and define each modifier applicable to class members Define access scope for class and its members Know the purpose of constructors and how to create one for a class © Accenture All Rights Reserved Course Code # Z16325

3 Objectives (continued)
ATS Application Programming: Java Programming Objectives (continued) 3.1 Encapsulation and Abstraction Define encapsulation Describe the principles of encapsulation Learn how to encapsulate a class Learn how to use setters and getters © Accenture All Rights Reserved Course Code # Z16325

4 ATS Application Programming: Java Programming
Defining Abstraction 3.1 Encapsulation and Abstraction Abstraction is the process of extracting common features from specific examples Abstraction is a process of defining the essential concepts while ignoring the inessential details One of the primary goals of a high level programming language is the simplification of unfriendly, complex, low level computing instructions using a structure that is easier to use, understand organize, maintain and extend. © Accenture All Rights Reserved Course Code # Z16325

5 Different Types of Abstraction
ATS Application Programming: Java Programming Different Types of Abstraction 3.1 Encapsulation and Abstraction Data Abstraction Programming languages define constructs to simplify the way information is presented to the programmer. Functional Abstraction Programming languages have constructs that ‘gift wrap’ very complex and low level instructions into instructions that are much more readable. Object Abstraction OOP languages take the concept even further and abstract programming constructs as objects. Data Abstraction Everything to a computer is basically bits consisting of 1s and 0s, which is hardly intuitive for normal people. So language designers come up with primitive types like integers, characters etc… which hide the complexity of the bit patterns that are actually used. These can further be combined into something more meaningful. For example, the concept of a Birthdate can be the combination of 3 primitives to represent month, date, and year. This in turn can be combined with other higher level structures like, Name, Address etc.. to form an Employee Record . This is much easier to understand than 1s and 0s Functional Abstraction Would you rather write or read code written this way: 1 MOV 0x0064,A0 2 MOV 0x0096,Al 3 ADD A0,A1,A2 OR x = ; Would you rather read this: int result = 1; for(int ctr = x; ctr >=2; ctr--){ result = result * ctr; } result = computeFactorial(int x) Object Abstraction Object abstraction builds on the previous two kinds of abstraction. Imagine a Car as an object. You want to drive a car. To drive a car, you all attend a driving school and study how to start a car, how to drive it, the proper driving etiquette etc… But driving school is different from automotive engineering school which teaches you how to build one. Now if your interest is only in driving, they only teach you how to drive a car. They leave out the very complex, probably interesting, but totally unnecessary mechanical engineering details. Also, when they teach you to drive a car, they don’t teach you to drive a particular kind of car. If you learn to drive using a sedan, that doesn’t necessarily mean, you cant drive a sports car or an SUV. They are all still cars with considerable differences but they are all generally driven the same way. © Accenture All Rights Reserved Course Code # Z16325

6 Everything is an Object
ATS Application Programming: Java Programming Everything is an Object 3.1 Encapsulation and Abstraction Anything that you can describe can be represented as an object, and that representation can be created, manipulated and destroyed to represent how you use the real object that it models. So what is an object? In our previous discussion, we said that an object embodies its own unique behavior, and each one models some object in the real world (and is therefore something that exists in time and space). A car or a book are examples of such objects. You can describe a car, repair it, drive it, and/or even sell it. You can buy a book, read a book, and/or even provide a review of the book. But in the real world, tangible items are not the only kind of objects that are of interest to us during software development. A work assignment, for example, is not something you can touch but you can describe it, discuss it, assign it and/or complete it. Book borrowing is also not tangible but you can describe it, monitor it and/or report it. Basically, anything that you can describe can be represented as an object, and that representation can be created, manipulated and destroyed to represent how you use the real object that it models. © Accenture All Rights Reserved Course Code # Z16325

7 ATS Application Programming: Java Programming
Defining an Object 3.1 Encapsulation and Abstraction An object is a self-contained entity with attributes and behaviors information an object must know: identity – uniqueness attributes – structure state – current condition behavior an object must do: methods – what it can do events – what it responds to Each object defines three basic types of information that it must know: 1. An object has to describe the features that will allow its users to distinguish it from other objects. It needs to have an identity. Even if two objects share the same features, each object has a unique identity. 2. An object must be able to describe itself. This type of information is stored in an object’s attributes and which form the object’s structure. 3. An object must be able to describe its current condition, called its state. Object state is sometimes represented by the values of each of its attributes. For example, a car can be brand new or worn out. Other times, the state is represented by the presence or absence of key relationships with other objects. For example, a book can be reserved or ordered. A reserved book has a relationship with the person who reserved it. An ordered book has a relationship with an order. © Accenture All Rights Reserved Course Code # Z16325

8 ATS Application Programming: Java Programming
Class as Abstraction 3.1 Encapsulation and Abstraction A class is an abstraction of its instances. It defines all the attributes and methods that its instances must also have. Person name sex age tellSex() tellAge() © Accenture All Rights Reserved Course Code # Z16325

9 ATS Application Programming: Java Programming
Defining a Class 3.1 Encapsulation and Abstraction A Class acts as the template from which an instance of an object is created. The class defines the properties of the object and the methods used to control the object's behavior. A Class specifies the structure of data as well as the methods which manipulate that data. Such data and methods are contained in each instance of the class. A Class is a model or template that can be instantiated to create objects with a common definition, and therefore common properties, operations and behavior. A Class provides a template for defining the behavior of a particular type of object. Objects are referred to as “instances” of a class. Notes: We provided several definitions just to be comprehensive. In the real world, you often have many objects of the same kind. For example, your car is just one of the many cars in the world. However, your car has some attributes and methods that are common to other cars. This is because car manufacturers used a blueprint or template in building your car. It would be very inefficient to produce a new blueprint for every individual car that is manufactured. [1] In the object-oriented approach, this blueprint is called a class. A class is an abstract concept that describes how to build an accurate representation of a specific type of object. It contains variables that define the attributes of an object. It also contains operations that define the associated methods of an object. [2] Bibliography [1] [2] MDC Application Design School © Accenture All Rights Reserved Course Code # Z16325

10 ATS Application Programming: Java Programming
Defining a Java Class 3.1 Encapsulation and Abstraction A Java Class denotes a category of objects, and acts as a blueprint for creating such objects. It defines its members referred to as fields and methods. The fields (also known as variables or attributes) refer to the properties of the class. The methods (also known as operations) refer to behaviors that the class exhibits. class Person { String name; char sex; int age; void tellSex() { if (sex=='M') System.out.println("I'm Male."); else if (sex=='F') System.out.println("I'm Female."); else System.out.println("I don't know!"); } void tellAge() { if (age<10) System.out.println("I'm just a kid."); else if (age<20) System.out.println("I'm a teenager."); else System.out.println("I'm a grown up."); © Accenture All Rights Reserved Course Code # Z16325

11 ATS Application Programming: Java Programming
Class Members 3.1 Encapsulation and Abstraction A class member refers to one of the fields or methods of a class. Static members are variables and methods belonging to a class where only a single copy of variables and methods are shared by each object. Instance members are variables and methods belonging to objects where a copy of each variable and method is created for each object instantiated. class Person { static int maleCount; static int femaleCount; String name; char sex; int age; static void showSexDistribution() { if (maleCount>femaleCount) System.out.println("Majority are male."); else if (femaleCount>maleCount) System.out.println("Majority are female."); else System.out.println("Equal number of male and female."); } void tellSex() { if (sex=='M') System.out.println("I'm Male."); else if (sex=='F') System.out.println("I'm Female."); else System.out.println("I don't know!"); void tellAge() { if (age<10) System.out.println("I'm just a kid."); else if (age<20) System.out.println("I'm a teenager."); else System.out.println("I'm a grown up."); © Accenture All Rights Reserved Course Code # Z16325

12 Instantiating a Class & Accessing its Members
ATS Application Programming: Java Programming Instantiating a Class & Accessing its Members 3.1 Encapsulation and Abstraction Instantiating a class means creating objects of its own type. The new operator is used to instantiate a class. Create Person objects using the new operator. class MainProgram { public static void main(String[] args) { // instantiating several objects Person p1 = new Person(); Person p2 = new Person(); Person p3 = new Person(); // accessing instance variables p1.name = "Vincent"; p1.sex = 'M'; p1.age = 8; p2.name = "Janice"; p2.sex = 'F'; p2.age = 19; p3.name = "Ricky"; p3.sex = 'M'; p3.age = 34; // accessing static variables Person.maleCount = 2; Person.femaleCount = 1; // accesssing instance methods p1.tellSex(); p1.tellAge(); p2.tellSex(); p2.tellAge(); p3.tellSex(); p3.tellAge(); // accessing static method Person.showSexDistribution(); } class Person { static int maleCount; static int femaleCount; String name; char sex; int age; static void showSexDistribution() { // method body here } void tellSex() { void tellAge() { Notes: Each Person object created is separate and its state distinct from other objects created from the Person class. (The complete code for the Person class is found in the previous slide) Sample Output: I'm Male. I'm just a kid. I'm Female. I'm a teenager. I'm a grown up. Majority are male. Access class variables by setting their values Access class methods by invoking their names © Accenture All Rights Reserved Course Code # Z16325

13 ATS Application Programming: Java Programming
Class Modifiers 3.1 Encapsulation and Abstraction Class modifiers change the way a class can be used. Access modifiers describe how a class can be accessed. Non-access modifiers describe how a class can be manipulated. Modifier Description (no modifier) class is accessible within its package only public class is accessible by any class in any package abstract class cannot be instantiated (a class cannot be abstract and final at the same time) final class cannot be extended strictfp class implements strict floating-point arithmetic © Accenture All Rights Reserved Course Code # Z16325

14 ATS Application Programming: Java Programming
Access Modifiers 3.1 Encapsulation and Abstraction Member modifiers change the way class members can be used Access modifiers describe how a member can be accessed Modifier Description (no modifier) member is accessible within its package only public member is accessible from any class of any package protected member is accessible in its class package and by its subclasses private member is accessible only from its class © Accenture All Rights Reserved Course Code # Z16325

15 ATS Application Programming: Java Programming
Access Modifiers 3.1 Encapsulation and Abstraction Private features of the Sample class can only be accessed from within the class itself. private Only classes that are in the package may access default features of classes that are in the package default Class Package Sample Class Talking Points: The purpose and focus of this slide is to describe the degrees of access control or visibility for hiding information or implementation. Discuss each access level and differentiate them from one another. Access control is often referred to as implementation hiding. Class Classes that are in the package and all its subclasses may access protected features of the Sample class. protected All classes may access public features of the Sample class. public * Default is not a modifier; it is just the name of the access level if no access modifier is specified. © Accenture All Rights Reserved Course Code # Z16325

16 ATS Application Programming: Java Programming
Member Modifiers 3.1 Encapsulation and Abstraction Member modifiers change the way class members can be used Non-access modifiers describe how a member can be manipulated Modifier Description static member belongs to a class final declares a constant variable or method abstract method is declared with no implementation (applied to methods, cannot be combined with other non-access modifiers ) strictfp method implements strict floating-point arithmetic (applied to methods) synchronized method is executed by only one thread at a time (applied only to methods) native method implementation is written in other language (applied only to methods) transient an instance variable is not saved when its object is persisted or serialized (applied only to variables) volatile variable is modified asynchronously by concurrently running threads (applied only to variables) Only a few of these modifiers are commonly used in Java. Thus, not all of them will be discussed thoroughly in the succeeding topics. © Accenture All Rights Reserved Course Code # Z16325

17 ATS Application Programming: Java Programming
Accessibility Scope 3.1 Encapsulation and Abstraction Accessibility scope defines the boundary of access to a class and its members Scope Access static static code can access static members but not instance members non-static non-static code can access both static members and instance members package a class and its members can be accessed within the package they are declared class class members can be accessed within the class block local variables can be accessed only within a block © Accenture All Rights Reserved Course Code # Z16325

18 Defining Encapsulation
ATS Application Programming: Java Programming Defining Encapsulation 3.1 Encapsulation and Abstraction Encapsulation is the process of hiding an object’s implementation from another object, while presenting only the interfaces that should be visible. Notes: Encapsulation is the process of hiding details of an object or function. Implementation hiding is a powerful programming technique because it reduces complexity. Encapsulation means to design, produce, and describe software so that it can be easily used without knowing the details of how it works. © Accenture All Rights Reserved Course Code # Z16325

19 Principles of Encapsulation
ATS Application Programming: Java Programming Principles of Encapsulation 3.1 Encapsulation and Abstraction “Don’t ask how I do it, but this is what I can do” - The encapsulated object “I don’t care how, just do your job, and I’ll do mine” - One encapsulated object to another Faculty Notes Encapsulation means to design, produce, and describe software so that it can be easily used without knowing the details of how it works. Programmers should only concern themselves with learning how to use an object, not how it works. © Accenture All Rights Reserved Course Code # Z16325

20 ATS Application Programming: Java Programming
Encapsulating a Class 3.1 Encapsulation and Abstraction Members of a class must always be declared with the minimum level of visibility. Provide setters and getters (also known as accessors/mutators) to allow controlled access to private data. Provide other public methods (known as interfaces ) that other objects must adhere to in order to interact with the object. Faculty Notes © Accenture All Rights Reserved Course Code # Z16325

21 ATS Application Programming: Java Programming
Setters and Getters 3.1 Encapsulation and Abstraction Setters and Getters allow controlled access to class data Setters are methods that (only) alter the state of an object Use setters to validate data before changing the object state Getters are methods that (only) return information about the state of an object Use getters to format data before returning the object’s state private char sex; public void setSex(char s) { // validate here sex = s; } public char getSex() { // format here return sex; Talking Points: The purpose and focus of this slide is to show the use of setters and getters as part of protecting data in encapsulation. Setters and getters should be named by: Capitalizing the first letter of the variable (first becomes First), and Prefixing the name with get or set (setFirst) For boolean variables, you can replace get with is (for example, isRunning) This is more than just a convention—if and when you start using JavaBeans, it becomes a requirement © Accenture All Rights Reserved Course Code # Z16325

22 Encapsulation Example
ATS Application Programming: Java Programming Encapsulation Example 3.1 Encapsulation and Abstraction public static void main(String[] args) { // instantiate several objects Person p1 = new Person(); Person p2 = new Person(); Person p3 = new Person(); // access instance variables using setters p1.setName("Vincent"); p1.setSex('M'); p1.setAge(8); p2.setName("Janice"); p2.setSex('F'); p1.setAge(19); p3.setName("Ricky"); p3.setSex('M'); p3.setAge(34); // access static variables directly Person.maleCount=2; Person.femaleCount=1; // access instance methods p1.tellSex(); p1.tellAge(); p2.tellSex(); p2.tellAge(); p3.tellSex(); p3.tellAge(); // access static method Person.showSexDistribution(); } class Person { // set variables to private private static int maleCount; private static int femaleCount; private String name; private char sex; private int age; /* * setters & getters, set to public */ public int getAge() { return age;} public void setAge(int a) { age = a;} public String getName() { return name;} public void setName(String n) { name = n;} public char getSex() { return sex;} public void setSex(char s) { sex = s;} * set other methods as interfaces public static void showSexDistribution() { // implementation here } public void tellSex() { public void tellAge() { I'm Male. I'm just a kid. I'm Female. I'm a teenager. I'm a grown up. Majority are male. © Accenture All Rights Reserved Course Code # Z16325

23 ATS Application Programming: Java Programming
Constructors 3.1 Encapsulation and Abstraction Constructors are methods which set the initial state of an object Constructors are called when an object is created using the new operator A default constructor is a constructor with no parameters, it initializes the instance variables to default values Restrictions on constructors constructor name must be the same as the class name constructor cannot return a value, not even void only an access modifier is allowed © Accenture All Rights Reserved Course Code # Z16325

24 ATS Application Programming: Java Programming
Key Points 3.1 Encapsulation and Abstraction Abstraction is the process of formulating general concepts by extracting common properties of instances. A class is an abstraction of its instances. A Java Class denotes a category of objects. Class members refer to its fields and methods. Static members are variables and methods belonging to a class. Instance members are variables and methods belonging to objects. Instantiating a class means creating objects of its own type. Class modifiers include: (no modifier), public, abstract, final and strictfp. Member modifiers include: (no modifier), public, protected, private, static, final, abstract, strictfp, synchronized, native, transient and volatile. © Accenture All Rights Reserved Course Code # Z16325

25 Key Points (Continued)
ATS Application Programming: Java Programming Key Points (Continued) 3.1 Encapsulation and Abstraction Encapsulation hides implementation details of a class. Encapsulating a class means declaring members with minimum level of visibility. Setters are methods whose only function is to alter the state of an object in a controlled manner. Getters are methods which only function is to return information about the state of an object. Constructors are methods which set the initial state of an object upon creation of the object. Faculty Notes: Abstraction, implementation hiding, and encapsulation are very different, but highly-related, concepts. One could argue that abstraction is a technique that helps us identify which specific information should be visible, and which information should be hidden. Encapsulation is then the technique for packaging the information in such a way as to hide what should be hidden, and make visible what is intended to be visible. © Accenture All Rights Reserved Course Code # Z16325


Download ppt "Encapsulation & Abstraction"

Similar presentations


Ads by Google