SlideShare a Scribd company logo
1 of 57
Download to read offline
Research Group
VI: Access control, Class Scope, Packages, Java API
1
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Overview
• Access control
• Class scope
• Packages
• Java API
2
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Access Control
3
public class Person {
String name;
int age = 0;
}
/**
• Main class of the Java program.
• */
public class Main {
public static void main(String[] args) {
Person bart = new Person();
bart.name = "Bart Simpson";
bart.age = -56;
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Access Control
4
public class Person {
private String name;
private int age = 0;
public void setAge(int new_age) {
if (age >= 0 && age <= 120)
age = new_age;
else
System.out.println("Wrong Age");
}
public int getAge() {
return age;
}
public void setName (String new_name) {
name = new_name;
}
public String getName() {
return name;
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Access Control
• Encapsulation
5
/**
• Main class of the Java program.
• */
public class Main {
public static void main(String[] args) {
Person bart = new Person();
bart.setName("Bart Simpson”);
bart.setAge(-56);
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Access Modifiers
6
• Public: others can use this
• Private: only the class can use this
⎼ public/private applies to any field or method
• Why Access Control
• Protect private information (sorta)
• Clarify how others should use your class
• Keep implementation separate from interface
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Overview
• Access control
• Class scope
• Packages
• Java API
7
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope Review
8
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope review
9
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Class Scope
10
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope
11
• Just like methods, variables are accesible inside {}
⎼ Previous lessons: method-level scope
⎼ This lesson: class-level scope
void method(int arg1) {
int arg2 = arg1 + 1;
}
class Example {
int memberVariable;
void setVariable(int newVal) {
memberVariable += newVal;
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope
12
Only method-level
‘servings’ is updated
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
‘this’ keyword
• Clarifies scope
• Means ‘my object’
13
class Example {
int memberVariable;
void setVariable(int newVal) {
this.memberVariable += newVal;
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope
14
Only method-level
‘servings’ is updated
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Scope – Using THIS
15
Object-level
‘servings’ is updated
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Overview
• Access control
• Class scope
• Packages
• Java API
16
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Packages
• Each class belongs to a package
• Classes in the same package serve a similar purpose
• Packages are just directories
• Classes in other packages need to be imported
17
import java.util.Scanner
(…)
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Defining Packages
18
• Defining packages
• Using packages
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Declaring classes inside packages
19
package parenttols;
public class BabyFood {
}
package parenttols;
public class Baby {
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Using previously defined packages
20
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Why Packages?
• Combine similar functionality
• org.boston.libraries.Library
• org.boston.libraries.Book
• Separate similar names
• shopping.List
• packing.List
21
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Special Packages
• All classes “see” classes in the same package
⎼ (no import needed)
• All classes “see” classes in java.lang
⎼ Example:
§ java.lang.String;
§ java.lang.System
22
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Overview
• Access control
• Class scope
• Packages
• Java API
23
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Java API
24
• Java includes lots of packages/classes
• Reuse classes to avoid extra work
• Java API versión 8:
⎼ http://docs.oracle.com/javase/8/docs/api/
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Interfaces
• Set of classes that share methods
• Declare an interface with the common
methods
• Can use the interface, without knowing an
objectʼs specific type
• Only have methods (mostly true)
• Do not provide code, only the definition (called
signatures)
• A class can implement any number of interfaces
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Interfaces
26
http://www.ntu.edu.sg/home/ehchua/programming/java/j3b_oopinheritancepolymorphism.html#zz-5.
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Implementing Interfaces
• Implementations provide complete methods
class Square implements Shape{
private side = 0;
public int area() {
return side * side;
}
public int perimetre() {
return side * 4;
}
}
interface Shape {
int area();
int perimetre();
void setColor(Color color);
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Collections
• An object that groups multiple items into a single
unit.
• Aggregate data items that are normally considered
together as a whole
⎼ A poker hand (collection of cards)
⎼ A folder (collection of files)
⎼ A team (collection of players)
28
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Collections
• Java Collections Framework
29
Collection
List Set SortedSet
TreeSet
Map
HashMap HashTable
HashSet
ArrayList LinkedList LinkedHash
Set
TreeMap
SortedMap
Iterator
ListIterator
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Collection Interface
• Group together common methods to handle
groups of objects
⎼ add (Object x)
⎼ remove (Object x)
⎼ contains (Object x)
⎼ size (Object x)
⎼ toArray (Object x)
⎼ Iterator (Object x)
30
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
List
• Redimensionable ordered list
of elements
• Repatead values are allowed
⎼ ArrayList
⎼ LinkedList
§ Keep insert order
§ Hampers performance
31
⎼ add(Object o)
⎼ add(int indice, Object o)
⎼ get(int indice)
⎼ remove(int indice)
⎼ clear()
⎼ indexOf(Object o)
⎼ lastIndexOf(Object o)
⎼ size()
⎼ contains(Object o)
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Collections
• List
32
import java.util.ArrayList;
class ArrayListExample {
public static void main(String[] arguments) {
ArrayList<String> cadenas = new ArrayList<String>();
cadenas.add("Ignacio");
cadenas.add("José");
cadenas.add("Clara");
System.out.println(cadenas.size());
System.out.println(cadenas.get(0));
System.out.println(cadenas.get(1));
cadenas.set(0, "Adiós");
cadenas.remove(1);
for (int i=0; i < cadenas.size(); i++){
System.out.println(cadenas.get(i));
}
for (String s : cadenas) {
System.out.println(s);
}
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Arrays with Items
• Adding books to the Books array
⎼ Create the array bigger than needed
⎼ Create an auxiliary copy, etc.
⎼ Use an ArrayList
33
Book[] books = {}
Book[] books = new Book[100]
ArrayList<Book> books = new ArrayList<Book>();
Book b = new Book(“El Quijote);
books.add(b);
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Sets
34
• Like an ArrayList, but
⎼ Only one copy of each object
§ equals() | hashcode()
⎼ No array index
• Features
⎼ Add objects to the set
⎼ Remove objects from the set
⎼ Is an object in the set?
⎼ add(Object o)
⎼ remove(Object o)
⎼ clear()
⎼ isEmpty()
⎼ iterator()
⎼ size()
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Sets
35
• HashSet
⎼ Best performance
• LinkedInHashSet
⎼ Performance: worse than HashSet
⎼ Keep insertion order
• TreeSet
⎼ Sorted (lowest to higest) set of Comparable items
⎼ Worst performance
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Sets
36
import java.util.TreeSet;
class TreeSetExample {
public static void main(String[] arguments) {
TreeSet<String> cadenas = new TreeSet<String>();
cadenas.add("Cristian");
cadenas.add("Andrés");
cadenas.add("Tania");
System.out.println(cadenas.first());
System.out.println(cadenas.last());
System.out.println(cadenas.size());
cadenas.remove("Tania");
for (String s : cadenas) {
System.out.println(s);
}
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Maps
• Stores a (key, value) pair of objects
⎼ AKA 2 cols table
⎼ Look up the key, get back the value
⎼ No duplicate keys
⎼ One value per key
• Examples: Address Book
⎼ Map from names to email addresses
37
⎼ clear()
⎼ containsKey(Object o)
⎼ containsValue(Object o)
⎼ get (Object key)
⎼ isEmpty()
⎼ remove(Object key)
⎼ size()
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashing
• A way to speed up searching
⎼ Instead of traversing the entire list
⎼ Use a magic function which yields the element index
• Hash function
⎼ Given a key, generates the address in
the table
38
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hash function
• From a given input, a Hash función produce a
value from a finite ouput range (maps the key into
an index)
⎼ Usually a fixed length text character
39
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Maps
• HashMap / Hashtable
⎼ Unordered (pseudo-random)
⎼ Best performance
⎼ [Hashtable: no null values]
• LinkedHashMap
⎼ Keep insert order
⎼ Performance: worse than HashMap
• TreeMap
⎼ Sorted (lowest to highest value)
⎼ Worst performance
40
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Maps
41
import java.util.Hashtable;
import java.util.Map.Entry;
class HashMapExample {
public static void main(String[] arguments) {
Hashtable<String, String> cadenas = new Hashtable<String, String>();
cadenas.put("Álvaro", "alv@urjc.es");
cadenas.put("Carolina", "caro@urjc.es");
cadenas.put("Saúl", "saul@urjc.es");
System.out.println(cadenas.size());
cadenas.remove("Álvaro");
System.out.println(cadenas.get("Carolina"));
for (String s : cadenas.keySet()) {
System.out.println(s);
}
for (String s : cadenas.values()) {
System.out.println(s); }
for (Entry<String, String> pairs : cadenas.entrySet()) {
System.out.println(pairs);
}
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• A Java Hashtable is a data structure that uses a
hash function to identify data through a key
⎼ Each key corresponds to a given value
⎼ No index
42
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Don’t need to know the
insides of a hash function
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• Declaration
• put(key, value)
⎼ Insert value and assigns the provided key to it
43
Hashtable<String,String> heroes =
new Hashtable<String,String>();
heroes.put("Marvel-234", "Spiderman");
heroes.put("DCComics-567", "Batman");
heroes.put("Marvel-768", "Hulk");
heroes.put("DCComics-987", "Superman");
// 1st element if the key
// 2nd element is the value
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• get(key)
⎼ returns the value corresponding to the key provided
44
String heroe1 = heroes.get(“Marvel-234”);
// heroe1 variable contains “Spiderman”
String heroe2 = heroes.get(“Marvel-768”);
// heroe2 variable contains “Hulk”
System.out.println(“Marvel heroes are: ” +
heroe1 + “ & ” + heroe2);
// prints:
// Marvel heroes are Spiderman & Hulk
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• The values in the hashtable are to be traversed by means of an
Enumeration object
⎼ elements()
§ Returns the values in the hashtable
⎼ hasMoreElements()
§ Yields true if more elements remain in
the Enumeration object
⎼ nextElement()
§ Returns the next element in the
Enumeration object
45
Enumeration<String> miEnumHeroes = heroes.elements();
while (miEnumHeroes.hasMoreElements()){
System.out.println(”Hero: " + miEnumHeroes.nextElement());
}
// prints the four values
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• keys()
⎼ Returns the keys of the hashtable
46
// Must import the follwing classess
import java.util.Enumeration;
import java.util.Hashtable;
Enumeration<String> miEnumClaves = heroes.keys();
while (miEnumClaves.hasMoreElements()){
System.out.println("Clave: " +
miEnumClaves.nextElement());
}
// prints the four keys:
// Clave: Marvel-234
// Clave: DCComics-567
// Clave: Marvel-768
// Clave: DCComics-987
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• Hashtable methods (summary)
⎼ put(key, value)
§ Adds a new <key,value> pair
⎼ remove(key)
§ Deletes the given <key,value> pair
⎼ get(key)
§ Returns the value corresponding to the given key
⎼ containsKey(key)
§ Yields true if key is in the Hashtable
⎼ contains(value)
§ Yields true if value is in the Hashtable
⎼ size()
§ Returns the number of <key,value> pairs in the Hashtable
47
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable
• Ejemplo
48
heroes.remove("DCComics-567");
// deletes the <DCComics-567,Batman> pair
System.out.println(”Amount of heroes: " + heroes.size());
// prints 3
String searchKey = "DCComics-987";
System.out.print (”Hero " + heroes.get(searchKey)
if (heroes.containsKey(searchKey)) {
System.out.println(" is in the table");
} else {
System.out.println(”is NOT in the table");
}
Clave Valor
Marvel-234 Spiderman
DCComics-567 Batman
Marvel-768 Hulk
DCComics-987 Superman
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
• Hashtable objects can be used as well to store any
given type of objects
49
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
50
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class Persona {
String nombre;
String apellido;
String DNI;
LocalDateTime nacimiento;
Persona(String nom, String ape, String dni, LocalDateTime naci){
this.nombre = nom;
this.apellido = ape;
this.DNI = dni;
this.nacimiento = naci;
}
long obtenerEdad(){
LocalDateTime fechaActual = LocalDateTime.now(); // devuelve la fecha y hora actual
long anyos = nacimiento.until(fechaActual, ChronoUnit.YEARS);
return anyos;
}
}
java.time: available from Java 8 on
(improvements for dates handling)
• LocalDateTime = date & time
• LocalDate = date (wout time)
DATE - until()
Two dates diff
(MINUTES, DAYS, MONTHS,YEARS, ETC.)
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
51
import java.time.LocalDateTime;
public class DemoPersona {
public static void main(String args[]){
LocalDateTime naci = LocalDateTime.of(1980, 6, 30, 13, 00); // 30/6/1980 13:00
Persona p1 = new Persona("Pepe", "Perez", “123654A", naci);
System.out.println("La edad de " + p1.nombre + " es: " + p1.obtenerEdad());
// prints: La edad de Pepe es: 35
}
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
52
import java.time.LocalDateTime;
import java.util.Enumeration;
import java.util.Hashtable;
public class DemoPersonasHash {
public static void main(String args[]){
Hashtable<String,Persona> personas = new Hashtable<String,Persona>();
Persona pepe = new Persona("Pepe", "Perez", "123654A", LocalDateTime.of(1980, 6, 30, 13, 00));
Persona maria = new Persona("Maria", "Gomez", "789369D", LocalDateTime.of(1975, 8, 28, 15, 30));
Persona andres = new Persona("Andres", "Gonzalez", "741852R", LocalDateTime.of(1988, 10, 30, 19, 15));
Persona angel = new Persona("Angel", "Urbino", "357159P", LocalDateTime.of(1993, 3, 25, 8, 45));
// Persona objects are added using their DNI as key to identify them
personas.put("123654A", pepe);
personas.put("789369D", maria);
personas.put("741852R", andres);
personas.put("357159P", angel);
Enumeration<Persona> miEnumPersonas = personas.elements(); // ready to traverse the Persona table
while (miEnumPersonas.hasMoreElements()){
Persona p1 = miEnumPersonas.nextElement();
System.out.println(p1.nombre + " tiene " + p1.obtenerEdad() + " años");
}
}
}
Prints
Pepe tiene 35 años
Maria tiene 40 años
Andres tiene 27 años
Angel tiene 22 años
Hashtable <DNI,Persona>
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
• What if we want to check whether a DNI is in the
table?
53
String DNIbuscado = "741852R";
if (personas.containsKey(DNIbuscado)) {
System.out.println(personas.get(DNIbuscado).nombre + ", con DNI: " +
DNIbuscado + " está en la tabla");
} else {
System.out.println("La persona buscada NO está en la tabla");
}
// Prints: Andres, con DNI: 741852R está en la tabla
Don’t forget to use an Scanner object to get
input data from the user
(this time ask him about the DNI to look for)
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Hashtable as Objects container
• Remove a person and insert a new one
• Restrict the number of Persona objects to 10
54
personas.remove("357159P");
personas.put("258654T", new Persona("Laura", "Serrano", "258654T",
LocalDateTime.of(1995, 5, 30, 19, 55)));
Persona laura = new Persona("Laura", "Serrano", "258654T",
LocalDateTime.of(1995, 5, 30, 19, 55));
if (personas.size()<10){
personas.put(laura.DNI, laura);
}
else{
System.out.println("La tabla para almacenar personas está al completo!");
}
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Collections - Sum Up
• Set
⎼ Unordered collection (unguaranted insertion order)
⎼ Does not allow for duplicates
⎼ Just one null ellement
• List
⎼ Ordered collection
⎼ Allows for duplicates
⎼ Multiple null elements
• Map
⎼ Unordered collection
⎼ Unique keys but duplicate values
⎼ One null key and multiple null values
55
Introducción a la Programación www.ise.es | @ise_urjc | @jmvara
Warnings
• Using TreeSet/TreeMap?
⎼ Read about Comparable interface
• Using HashSet/HashMap?
⎼ Read about equals, hashCode methods
• Note
⎼ This only matters for classes you build, not for java built-
in types
56
Research Group
VI: Access control, Class Scope, Packages, Java API
57

More Related Content

Similar to CGIS_IP_T6_AccessCtrl_ClassScope_Packages_API.pdf

lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.pptNadiSarj2
 
lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.pptJemarManatad1
 
lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.pptSquidTurbo
 
java review by prof kmt.ppt
java review by prof kmt.pptjava review by prof kmt.ppt
java review by prof kmt.pptssuser1d3c311
 
4. Classes and Methods
4. Classes and Methods4. Classes and Methods
4. Classes and MethodsNilesh Dalvi
 
4java Basic Syntax
4java Basic Syntax4java Basic Syntax
4java Basic SyntaxAdil Jafri
 
Taxonomy of Scala
Taxonomy of ScalaTaxonomy of Scala
Taxonomy of Scalashinolajla
 
Pi j2.3 objects
Pi j2.3 objectsPi j2.3 objects
Pi j2.3 objectsmcollison
 
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...Sagar Verma
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaSandesh Sharma
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java ProgrammersEric Pederson
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaCPD INDIA
 
Java 103 intro to java data structures
Java 103   intro to java data structuresJava 103   intro to java data structures
Java 103 intro to java data structuresagorolabs
 
03 Java Language And OOP Part III
03 Java Language And OOP Part III03 Java Language And OOP Part III
03 Java Language And OOP Part IIIHari Christian
 
Static analysis: Around Java in 60 minutes
Static analysis: Around Java in 60 minutesStatic analysis: Around Java in 60 minutes
Static analysis: Around Java in 60 minutesAndrey Karpov
 
Java OOP Programming language (Part 4) - Collection
Java OOP Programming language (Part 4) - CollectionJava OOP Programming language (Part 4) - Collection
Java OOP Programming language (Part 4) - CollectionOUM SAOKOSAL
 

Similar to CGIS_IP_T6_AccessCtrl_ClassScope_Packages_API.pdf (20)

lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.ppt
 
lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.ppt
 
lecture-a-java-review.ppt
lecture-a-java-review.pptlecture-a-java-review.ppt
lecture-a-java-review.ppt
 
Java
Java Java
Java
 
java review by prof kmt.ppt
java review by prof kmt.pptjava review by prof kmt.ppt
java review by prof kmt.ppt
 
4. Classes and Methods
4. Classes and Methods4. Classes and Methods
4. Classes and Methods
 
4java Basic Syntax
4java Basic Syntax4java Basic Syntax
4java Basic Syntax
 
Taxonomy of Scala
Taxonomy of ScalaTaxonomy of Scala
Taxonomy of Scala
 
Pi j2.3 objects
Pi j2.3 objectsPi j2.3 objects
Pi j2.3 objects
 
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharma
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java Programmers
 
L04 Software Design 2
L04 Software Design 2L04 Software Design 2
L04 Software Design 2
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
 
Java 103 intro to java data structures
Java 103   intro to java data structuresJava 103   intro to java data structures
Java 103 intro to java data structures
 
03 Java Language And OOP Part III
03 Java Language And OOP Part III03 Java Language And OOP Part III
03 Java Language And OOP Part III
 
Static analysis: Around Java in 60 minutes
Static analysis: Around Java in 60 minutesStatic analysis: Around Java in 60 minutes
Static analysis: Around Java in 60 minutes
 
Linq Introduction
Linq IntroductionLinq Introduction
Linq Introduction
 
Java OOP Programming language (Part 4) - Collection
Java OOP Programming language (Part 4) - CollectionJava OOP Programming language (Part 4) - Collection
Java OOP Programming language (Part 4) - Collection
 
Object and class
Object and classObject and class
Object and class
 

Recently uploaded

Best VIP Call Girls Noida Sector 23 Call Me: 8700611579
Best VIP Call Girls Noida Sector 23 Call Me: 8700611579Best VIP Call Girls Noida Sector 23 Call Me: 8700611579
Best VIP Call Girls Noida Sector 23 Call Me: 8700611579diyaspanoida
 
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋Sheetaleventcompany
 
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...riyadelhic riyadelhic
 
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.riyadelhic riyadelhic
 
SURAT CALL GIRL 92628/71154 SURAT CALL G
SURAT CALL GIRL 92628/71154 SURAT CALL GSURAT CALL GIRL 92628/71154 SURAT CALL G
SURAT CALL GIRL 92628/71154 SURAT CALL GNiteshKumar82226
 
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579Best VIP Call Girl Noida Sector 48 Call Me: 8700611579
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579diyaspanoida
 
MYSORE CALL GIRLS ESCORT SER 92628/71154
MYSORE CALL GIRLS ESCORT SER 92628/71154MYSORE CALL GIRLS ESCORT SER 92628/71154
MYSORE CALL GIRLS ESCORT SER 92628/71154NiteshKumar82226
 
Call Girls | 😏💦 03274100048 | Call Girls Near Me
Call Girls | 😏💦 03274100048 | Call Girls Near MeCall Girls | 😏💦 03274100048 | Call Girls Near Me
Call Girls | 😏💦 03274100048 | Call Girls Near MeIfra Zohaib
 
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 60009891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000teencall080
 
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Availablenitugupta1209
 
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...aakahthapa70
 
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...aakahthapa70
 
Russian Call Girls in Goa %(9316020077)# Russian Call Girls in Goa By Russi...
Russian Call Girls  in Goa %(9316020077)# Russian Call Girls  in Goa By Russi...Russian Call Girls  in Goa %(9316020077)# Russian Call Girls  in Goa By Russi...
Russian Call Girls in Goa %(9316020077)# Russian Call Girls in Goa By Russi...Goa Call Girls Service Goa escort agency
 
DIGHA CALL GIRL 92628/1154 DIGHA CALL GI
DIGHA CALL GIRL 92628/1154 DIGHA CALL GIDIGHA CALL GIRL 92628/1154 DIGHA CALL GI
DIGHA CALL GIRL 92628/1154 DIGHA CALL GINiteshKumar82226
 
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...teencall080
 
Radhika Call Girls In Jaipur 9358660226 Escorts service
Radhika Call Girls In Jaipur 9358660226 Escorts serviceRadhika Call Girls In Jaipur 9358660226 Escorts service
Radhika Call Girls In Jaipur 9358660226 Escorts servicerahul222jai
 
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.riyadelhic riyadelhic
 

Recently uploaded (20)

Best VIP Call Girls Noida Sector 23 Call Me: 8700611579
Best VIP Call Girls Noida Sector 23 Call Me: 8700611579Best VIP Call Girls Noida Sector 23 Call Me: 8700611579
Best VIP Call Girls Noida Sector 23 Call Me: 8700611579
 
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋
💚😋Bangalore Escort Service Call Girls, ₹5000 To 25K With AC💚😋
 
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...
Call Now ☎9870417354|| Call Girls in Gurgaon Sector 13 Escort Service Gurgaon...
 
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 12 Escort Service Noida N.C.R.
 
SURAT CALL GIRL 92628/71154 SURAT CALL G
SURAT CALL GIRL 92628/71154 SURAT CALL GSURAT CALL GIRL 92628/71154 SURAT CALL G
SURAT CALL GIRL 92628/71154 SURAT CALL G
 
Call Girls In Goa For Fun 9316020077 By Goa Call Girls For Pick Up Night
Call Girls In  Goa  For Fun 9316020077 By  Goa  Call Girls For Pick Up NightCall Girls In  Goa  For Fun 9316020077 By  Goa  Call Girls For Pick Up Night
Call Girls In Goa For Fun 9316020077 By Goa Call Girls For Pick Up Night
 
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579Best VIP Call Girl Noida Sector 48 Call Me: 8700611579
Best VIP Call Girl Noida Sector 48 Call Me: 8700611579
 
Goa Call Girls 🥰 +91 9540619990 📍Service Girls In Goa
Goa Call Girls 🥰 +91 9540619990 📍Service Girls In GoaGoa Call Girls 🥰 +91 9540619990 📍Service Girls In Goa
Goa Call Girls 🥰 +91 9540619990 📍Service Girls In Goa
 
MYSORE CALL GIRLS ESCORT SER 92628/71154
MYSORE CALL GIRLS ESCORT SER 92628/71154MYSORE CALL GIRLS ESCORT SER 92628/71154
MYSORE CALL GIRLS ESCORT SER 92628/71154
 
Call Girls | 😏💦 03274100048 | Call Girls Near Me
Call Girls | 😏💦 03274100048 | Call Girls Near MeCall Girls | 😏💦 03274100048 | Call Girls Near Me
Call Girls | 😏💦 03274100048 | Call Girls Near Me
 
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 60009891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000
9891550660 Call Girls In Noida Sector 62 Short 1500 Night 6000
 
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available
9811611494,Low Rate Call Girls In Connaught Place Delhi 24hrs Available
 
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...
Call Girls In {{Connaught Place Delhi}}96679@38988 Indian Russian High Profil...
 
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...
Call Girls In {Connaught Place Delhi} 9667938988 IndianRussian High Profile E...
 
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
 
Russian Call Girls in Goa %(9316020077)# Russian Call Girls in Goa By Russi...
Russian Call Girls  in Goa %(9316020077)# Russian Call Girls  in Goa By Russi...Russian Call Girls  in Goa %(9316020077)# Russian Call Girls  in Goa By Russi...
Russian Call Girls in Goa %(9316020077)# Russian Call Girls in Goa By Russi...
 
DIGHA CALL GIRL 92628/1154 DIGHA CALL GI
DIGHA CALL GIRL 92628/1154 DIGHA CALL GIDIGHA CALL GIRL 92628/1154 DIGHA CALL GI
DIGHA CALL GIRL 92628/1154 DIGHA CALL GI
 
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...
+91-9310611641 Russian Call Girls In New Delhi Independent Russian Call Girls...
 
Radhika Call Girls In Jaipur 9358660226 Escorts service
Radhika Call Girls In Jaipur 9358660226 Escorts serviceRadhika Call Girls In Jaipur 9358660226 Escorts service
Radhika Call Girls In Jaipur 9358660226 Escorts service
 
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.
Call Now ☎9870417354|| Call Girls in Noida Sector 18 Escort Service Noida N.C.R.
 

CGIS_IP_T6_AccessCtrl_ClassScope_Packages_API.pdf

  • 1. Research Group VI: Access control, Class Scope, Packages, Java API 1
  • 2. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Overview • Access control • Class scope • Packages • Java API 2
  • 3. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Access Control 3 public class Person { String name; int age = 0; } /** • Main class of the Java program. • */ public class Main { public static void main(String[] args) { Person bart = new Person(); bart.name = "Bart Simpson"; bart.age = -56; } }
  • 4. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Access Control 4 public class Person { private String name; private int age = 0; public void setAge(int new_age) { if (age >= 0 && age <= 120) age = new_age; else System.out.println("Wrong Age"); } public int getAge() { return age; } public void setName (String new_name) { name = new_name; } public String getName() { return name; } }
  • 5. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Access Control • Encapsulation 5 /** • Main class of the Java program. • */ public class Main { public static void main(String[] args) { Person bart = new Person(); bart.setName("Bart Simpson”); bart.setAge(-56); } }
  • 6. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Access Modifiers 6 • Public: others can use this • Private: only the class can use this ⎼ public/private applies to any field or method • Why Access Control • Protect private information (sorta) • Clarify how others should use your class • Keep implementation separate from interface
  • 7. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Overview • Access control • Class scope • Packages • Java API 7
  • 8. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope Review 8
  • 9. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope review 9
  • 10. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Class Scope 10
  • 11. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope 11 • Just like methods, variables are accesible inside {} ⎼ Previous lessons: method-level scope ⎼ This lesson: class-level scope void method(int arg1) { int arg2 = arg1 + 1; } class Example { int memberVariable; void setVariable(int newVal) { memberVariable += newVal; } }
  • 12. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope 12 Only method-level ‘servings’ is updated
  • 13. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara ‘this’ keyword • Clarifies scope • Means ‘my object’ 13 class Example { int memberVariable; void setVariable(int newVal) { this.memberVariable += newVal; } }
  • 14. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope 14 Only method-level ‘servings’ is updated
  • 15. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Scope – Using THIS 15 Object-level ‘servings’ is updated
  • 16. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Overview • Access control • Class scope • Packages • Java API 16
  • 17. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Packages • Each class belongs to a package • Classes in the same package serve a similar purpose • Packages are just directories • Classes in other packages need to be imported 17 import java.util.Scanner (…)
  • 18. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Defining Packages 18 • Defining packages • Using packages
  • 19. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Declaring classes inside packages 19 package parenttols; public class BabyFood { } package parenttols; public class Baby { }
  • 20. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Using previously defined packages 20
  • 21. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Why Packages? • Combine similar functionality • org.boston.libraries.Library • org.boston.libraries.Book • Separate similar names • shopping.List • packing.List 21
  • 22. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Special Packages • All classes “see” classes in the same package ⎼ (no import needed) • All classes “see” classes in java.lang ⎼ Example: § java.lang.String; § java.lang.System 22
  • 23. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Overview • Access control • Class scope • Packages • Java API 23
  • 24. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Java API 24 • Java includes lots of packages/classes • Reuse classes to avoid extra work • Java API versión 8: ⎼ http://docs.oracle.com/javase/8/docs/api/
  • 25. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Interfaces • Set of classes that share methods • Declare an interface with the common methods • Can use the interface, without knowing an objectʼs specific type • Only have methods (mostly true) • Do not provide code, only the definition (called signatures) • A class can implement any number of interfaces
  • 26. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Interfaces 26 http://www.ntu.edu.sg/home/ehchua/programming/java/j3b_oopinheritancepolymorphism.html#zz-5.
  • 27. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Implementing Interfaces • Implementations provide complete methods class Square implements Shape{ private side = 0; public int area() { return side * side; } public int perimetre() { return side * 4; } } interface Shape { int area(); int perimetre(); void setColor(Color color); }
  • 28. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Collections • An object that groups multiple items into a single unit. • Aggregate data items that are normally considered together as a whole ⎼ A poker hand (collection of cards) ⎼ A folder (collection of files) ⎼ A team (collection of players) 28
  • 29. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Collections • Java Collections Framework 29 Collection List Set SortedSet TreeSet Map HashMap HashTable HashSet ArrayList LinkedList LinkedHash Set TreeMap SortedMap Iterator ListIterator
  • 30. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Collection Interface • Group together common methods to handle groups of objects ⎼ add (Object x) ⎼ remove (Object x) ⎼ contains (Object x) ⎼ size (Object x) ⎼ toArray (Object x) ⎼ Iterator (Object x) 30
  • 31. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara List • Redimensionable ordered list of elements • Repatead values are allowed ⎼ ArrayList ⎼ LinkedList § Keep insert order § Hampers performance 31 ⎼ add(Object o) ⎼ add(int indice, Object o) ⎼ get(int indice) ⎼ remove(int indice) ⎼ clear() ⎼ indexOf(Object o) ⎼ lastIndexOf(Object o) ⎼ size() ⎼ contains(Object o)
  • 32. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Collections • List 32 import java.util.ArrayList; class ArrayListExample { public static void main(String[] arguments) { ArrayList<String> cadenas = new ArrayList<String>(); cadenas.add("Ignacio"); cadenas.add("José"); cadenas.add("Clara"); System.out.println(cadenas.size()); System.out.println(cadenas.get(0)); System.out.println(cadenas.get(1)); cadenas.set(0, "Adiós"); cadenas.remove(1); for (int i=0; i < cadenas.size(); i++){ System.out.println(cadenas.get(i)); } for (String s : cadenas) { System.out.println(s); } } }
  • 33. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Arrays with Items • Adding books to the Books array ⎼ Create the array bigger than needed ⎼ Create an auxiliary copy, etc. ⎼ Use an ArrayList 33 Book[] books = {} Book[] books = new Book[100] ArrayList<Book> books = new ArrayList<Book>(); Book b = new Book(“El Quijote); books.add(b);
  • 34. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Sets 34 • Like an ArrayList, but ⎼ Only one copy of each object § equals() | hashcode() ⎼ No array index • Features ⎼ Add objects to the set ⎼ Remove objects from the set ⎼ Is an object in the set? ⎼ add(Object o) ⎼ remove(Object o) ⎼ clear() ⎼ isEmpty() ⎼ iterator() ⎼ size()
  • 35. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Sets 35 • HashSet ⎼ Best performance • LinkedInHashSet ⎼ Performance: worse than HashSet ⎼ Keep insertion order • TreeSet ⎼ Sorted (lowest to higest) set of Comparable items ⎼ Worst performance
  • 36. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Sets 36 import java.util.TreeSet; class TreeSetExample { public static void main(String[] arguments) { TreeSet<String> cadenas = new TreeSet<String>(); cadenas.add("Cristian"); cadenas.add("Andrés"); cadenas.add("Tania"); System.out.println(cadenas.first()); System.out.println(cadenas.last()); System.out.println(cadenas.size()); cadenas.remove("Tania"); for (String s : cadenas) { System.out.println(s); } } }
  • 37. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Maps • Stores a (key, value) pair of objects ⎼ AKA 2 cols table ⎼ Look up the key, get back the value ⎼ No duplicate keys ⎼ One value per key • Examples: Address Book ⎼ Map from names to email addresses 37 ⎼ clear() ⎼ containsKey(Object o) ⎼ containsValue(Object o) ⎼ get (Object key) ⎼ isEmpty() ⎼ remove(Object key) ⎼ size()
  • 38. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashing • A way to speed up searching ⎼ Instead of traversing the entire list ⎼ Use a magic function which yields the element index • Hash function ⎼ Given a key, generates the address in the table 38
  • 39. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hash function • From a given input, a Hash función produce a value from a finite ouput range (maps the key into an index) ⎼ Usually a fixed length text character 39
  • 40. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Maps • HashMap / Hashtable ⎼ Unordered (pseudo-random) ⎼ Best performance ⎼ [Hashtable: no null values] • LinkedHashMap ⎼ Keep insert order ⎼ Performance: worse than HashMap • TreeMap ⎼ Sorted (lowest to highest value) ⎼ Worst performance 40
  • 41. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Maps 41 import java.util.Hashtable; import java.util.Map.Entry; class HashMapExample { public static void main(String[] arguments) { Hashtable<String, String> cadenas = new Hashtable<String, String>(); cadenas.put("Álvaro", "alv@urjc.es"); cadenas.put("Carolina", "caro@urjc.es"); cadenas.put("Saúl", "saul@urjc.es"); System.out.println(cadenas.size()); cadenas.remove("Álvaro"); System.out.println(cadenas.get("Carolina")); for (String s : cadenas.keySet()) { System.out.println(s); } for (String s : cadenas.values()) { System.out.println(s); } for (Entry<String, String> pairs : cadenas.entrySet()) { System.out.println(pairs); } } }
  • 42. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • A Java Hashtable is a data structure that uses a hash function to identify data through a key ⎼ Each key corresponds to a given value ⎼ No index 42 Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman Don’t need to know the insides of a hash function
  • 43. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • Declaration • put(key, value) ⎼ Insert value and assigns the provided key to it 43 Hashtable<String,String> heroes = new Hashtable<String,String>(); heroes.put("Marvel-234", "Spiderman"); heroes.put("DCComics-567", "Batman"); heroes.put("Marvel-768", "Hulk"); heroes.put("DCComics-987", "Superman"); // 1st element if the key // 2nd element is the value Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman
  • 44. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • get(key) ⎼ returns the value corresponding to the key provided 44 String heroe1 = heroes.get(“Marvel-234”); // heroe1 variable contains “Spiderman” String heroe2 = heroes.get(“Marvel-768”); // heroe2 variable contains “Hulk” System.out.println(“Marvel heroes are: ” + heroe1 + “ & ” + heroe2); // prints: // Marvel heroes are Spiderman & Hulk Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman
  • 45. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • The values in the hashtable are to be traversed by means of an Enumeration object ⎼ elements() § Returns the values in the hashtable ⎼ hasMoreElements() § Yields true if more elements remain in the Enumeration object ⎼ nextElement() § Returns the next element in the Enumeration object 45 Enumeration<String> miEnumHeroes = heroes.elements(); while (miEnumHeroes.hasMoreElements()){ System.out.println(”Hero: " + miEnumHeroes.nextElement()); } // prints the four values Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman
  • 46. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • keys() ⎼ Returns the keys of the hashtable 46 // Must import the follwing classess import java.util.Enumeration; import java.util.Hashtable; Enumeration<String> miEnumClaves = heroes.keys(); while (miEnumClaves.hasMoreElements()){ System.out.println("Clave: " + miEnumClaves.nextElement()); } // prints the four keys: // Clave: Marvel-234 // Clave: DCComics-567 // Clave: Marvel-768 // Clave: DCComics-987 Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman
  • 47. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • Hashtable methods (summary) ⎼ put(key, value) § Adds a new <key,value> pair ⎼ remove(key) § Deletes the given <key,value> pair ⎼ get(key) § Returns the value corresponding to the given key ⎼ containsKey(key) § Yields true if key is in the Hashtable ⎼ contains(value) § Yields true if value is in the Hashtable ⎼ size() § Returns the number of <key,value> pairs in the Hashtable 47
  • 48. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable • Ejemplo 48 heroes.remove("DCComics-567"); // deletes the <DCComics-567,Batman> pair System.out.println(”Amount of heroes: " + heroes.size()); // prints 3 String searchKey = "DCComics-987"; System.out.print (”Hero " + heroes.get(searchKey) if (heroes.containsKey(searchKey)) { System.out.println(" is in the table"); } else { System.out.println(”is NOT in the table"); } Clave Valor Marvel-234 Spiderman DCComics-567 Batman Marvel-768 Hulk DCComics-987 Superman
  • 49. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container • Hashtable objects can be used as well to store any given type of objects 49
  • 50. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container 50 import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class Persona { String nombre; String apellido; String DNI; LocalDateTime nacimiento; Persona(String nom, String ape, String dni, LocalDateTime naci){ this.nombre = nom; this.apellido = ape; this.DNI = dni; this.nacimiento = naci; } long obtenerEdad(){ LocalDateTime fechaActual = LocalDateTime.now(); // devuelve la fecha y hora actual long anyos = nacimiento.until(fechaActual, ChronoUnit.YEARS); return anyos; } } java.time: available from Java 8 on (improvements for dates handling) • LocalDateTime = date & time • LocalDate = date (wout time) DATE - until() Two dates diff (MINUTES, DAYS, MONTHS,YEARS, ETC.)
  • 51. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container 51 import java.time.LocalDateTime; public class DemoPersona { public static void main(String args[]){ LocalDateTime naci = LocalDateTime.of(1980, 6, 30, 13, 00); // 30/6/1980 13:00 Persona p1 = new Persona("Pepe", "Perez", “123654A", naci); System.out.println("La edad de " + p1.nombre + " es: " + p1.obtenerEdad()); // prints: La edad de Pepe es: 35 } }
  • 52. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container 52 import java.time.LocalDateTime; import java.util.Enumeration; import java.util.Hashtable; public class DemoPersonasHash { public static void main(String args[]){ Hashtable<String,Persona> personas = new Hashtable<String,Persona>(); Persona pepe = new Persona("Pepe", "Perez", "123654A", LocalDateTime.of(1980, 6, 30, 13, 00)); Persona maria = new Persona("Maria", "Gomez", "789369D", LocalDateTime.of(1975, 8, 28, 15, 30)); Persona andres = new Persona("Andres", "Gonzalez", "741852R", LocalDateTime.of(1988, 10, 30, 19, 15)); Persona angel = new Persona("Angel", "Urbino", "357159P", LocalDateTime.of(1993, 3, 25, 8, 45)); // Persona objects are added using their DNI as key to identify them personas.put("123654A", pepe); personas.put("789369D", maria); personas.put("741852R", andres); personas.put("357159P", angel); Enumeration<Persona> miEnumPersonas = personas.elements(); // ready to traverse the Persona table while (miEnumPersonas.hasMoreElements()){ Persona p1 = miEnumPersonas.nextElement(); System.out.println(p1.nombre + " tiene " + p1.obtenerEdad() + " años"); } } } Prints Pepe tiene 35 años Maria tiene 40 años Andres tiene 27 años Angel tiene 22 años Hashtable <DNI,Persona>
  • 53. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container • What if we want to check whether a DNI is in the table? 53 String DNIbuscado = "741852R"; if (personas.containsKey(DNIbuscado)) { System.out.println(personas.get(DNIbuscado).nombre + ", con DNI: " + DNIbuscado + " está en la tabla"); } else { System.out.println("La persona buscada NO está en la tabla"); } // Prints: Andres, con DNI: 741852R está en la tabla Don’t forget to use an Scanner object to get input data from the user (this time ask him about the DNI to look for)
  • 54. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Hashtable as Objects container • Remove a person and insert a new one • Restrict the number of Persona objects to 10 54 personas.remove("357159P"); personas.put("258654T", new Persona("Laura", "Serrano", "258654T", LocalDateTime.of(1995, 5, 30, 19, 55))); Persona laura = new Persona("Laura", "Serrano", "258654T", LocalDateTime.of(1995, 5, 30, 19, 55)); if (personas.size()<10){ personas.put(laura.DNI, laura); } else{ System.out.println("La tabla para almacenar personas está al completo!"); }
  • 55. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Collections - Sum Up • Set ⎼ Unordered collection (unguaranted insertion order) ⎼ Does not allow for duplicates ⎼ Just one null ellement • List ⎼ Ordered collection ⎼ Allows for duplicates ⎼ Multiple null elements • Map ⎼ Unordered collection ⎼ Unique keys but duplicate values ⎼ One null key and multiple null values 55
  • 56. Introducción a la Programación www.ise.es | @ise_urjc | @jmvara Warnings • Using TreeSet/TreeMap? ⎼ Read about Comparable interface • Using HashSet/HashMap? ⎼ Read about equals, hashCode methods • Note ⎼ This only matters for classes you build, not for java built- in types 56
  • 57. Research Group VI: Access control, Class Scope, Packages, Java API 57