Using Objects and Classes
Defining Simple Classes
Objects and Classes
Software University
http://softuni.bg
SoftUni Team
Technical Trainers
Table of Contents
1. Objects
2. Classes
3. Built in Classes
4. Defining Simple Classes
 Fields
 Constructors
 Methods
sli.do
#fund-java
Have a Question?
Objects and Classes
Objects
 An object holds a set of named values
 E.g. birthday object holds day, month and year
 Creating a birthday object:
5
Birthday
day = 27
month = 11
year = 1996
LocalDate birthday =
LocalDate.of(2018, 5, 5);
System.out.println(birthday);
Create a new object of
type LocalDate
Object
fields
Object
name
Classes
 In programming classes provide the structure for objects
 Act as a blueprint for objects of the same type
 Classes define:
 Fields (private variables), e.g. day, month, year
 Getters/Setters, e.g. getDay, setMonth, getYear
 Actions (behavior), e.g. plusDays(count),
subtract(date)
 Typically a class has multiple instances (objects)
 Sample class: LocalDate
 Sample objects: birthdayPeter, birthdayMaria
6
Objects - Instances of Classes
 Creating the object of a defined class is
called instantiation
 The instance is the object itself, which is
created runtime
 All instances have common behaviour
7
LocalDate date1 = LocalDate.of(2018, 5, 5);
LocalDate date2 = LocalDate.of(2016, 3, 5);
LocalDate date3 = LocalDate.of(2013, 3, 2);
Classes vs. Objects
 Classes provide structure for
creating objects
 An object is a single
instance of a class
8
class
LocalDate
day: int
month: int
year: int
plusDays(…)
minusDays(…)
Class actions
(methods)
Class name
Class fields
object
birthdayPeter
day = 27
month = 11
year = 1996
Object
name
Object
data
Using the Built-In API Classes
Math, Random, BigInteger ...
 Java provides ready-to-use classes:
 Organized inside Packages like:
java.util.Scanner, java.utils.List, etc.
 Using static class members:
 Using non-static Java classes:
Built-In API Classes in Java
10
LocalDateTime today = LocalDateTime.now();
double cosine = Math.cos(Math.PI);
Random rnd = new Random();
int randomNumber = rnd.nextInt(99);
 You are given a list of words
 Randomize their order and print each word on a separate line
Problem: Randomize Words
11Check your solution here: https://judge.softuni.bg/Contests/1319/
Note: the output is a sample.
It should always be different!
a b
b
a
PHP Java C#
Java
PHP
C#
Solution: Randomize Words
12
Scanner sc = new Scanner(System.in);
String[] words = sc.nextLine().split(" ");
Random rnd = new Random();
for (int pos1 = 0; pos1 < words.length; pos1++) {
int pos2 = rnd.nextInt(words.length);
//TODO: Swap words[pos1] with words[pos2]
}
System.out.println(String.join(
System.lineSeparator(), words));
Check your solution here: https://judge.softuni.bg/Contests/1319/
 Calculate n! (n factorial) for very big n (e.g. 1000)
Problem: Big Factorial
13
50
3041409320171337804361260816606476884437764156
8960512000000000000
5 120 10 3628800 12 479001600
88
1854826422573984391147968456455462843802209689
4939934668442158098688956218402819931910014124
4804501828416633516851200000000000000000000
Check your solution here: https://judge.softuni.bg/Contests/1319/
Solution: Big Factorial
14
import java.math.BigInteger;
...
int n = Integer.parseInt(sc.nextLine());
BigInteger f = new BigInteger(String.valueOf(1));
for (int i = 1; i <= n; i++) {
f = f.multiply(BigInteger
.valueOf(Integer.parseInt(String.valueOf(i))));
}
System.out.println(f);
Use the
java.math.BigInteger
N!
Check your solution here: https://judge.softuni.bg/Contests/1319/
Defining Classes
Creating Custom Classes
 Specification of a given type of objects
from the real-world
 Classes provide structure for describing
and creating objects
Defining Simple Classes
16
class Dice {
…
}
Class name
Class body
Keyword
Naming Classes
 Use PascalCase naming
 Use descriptive nouns
 Avoid abbreviations (except widely known, e.g. URL,
HTTP, etc.)
17
class Dice { … }
class BankAccount { … }
class IntegerCalculator { … }
class TPMF { … }
class bankaccount { … }
class intcalc { … }
 Class is made up of state and behavior
 Fields store values
 Methods describe behaviour
Class Members
18
class Dice {
private int sides;
public void roll() { … }
}
Field
Method
 Store executable code (algorithm)
Methods
19
class Dice {
public int sides;
public int roll() {
Random rnd = new Random();
int sides = rnd.nextInt(this.sides + 1);
return sides;
}
}
Getters and Setters
20
class Dice {
. . .
public int getSides() { return this.sides; }
public void setSides(int sides) {
this.sides = sides;
}
public String getType() { return this.type; }
public void setType(String type) {
this.type = type;
}
}
Getters & Setters
 A class can have many instances (objects)
Creating an Object
21
class Program {
public static void main(String[] args) {
Dice diceD6 = new Dice();
Dice diceD8 = new Dice();
}
}
Use the new
keyword
Variable stores a
reference
 Special methods, executed during object creation
Constructors
22
class Dice {
public int sides;
public Dice() {
this.sides = 6;
}
}
Overloading default
constructor
Constructor name is
the same as the name
of the class
 You can have multiple constructors in the same class
Constructors (2)
23
class Dice {
public int sides;
public Dice() { }
public Dice(int sides) {
this.sides = sides;
}
}
class StartUp {
public static void main(String[] args) {
Dice dice1 = new Dice();
Dice dice2 = new Dice(7);
}
}
 Read students until you receive "end" in the following format:
 "{firstName} {lastName} {age} {hometown}"
 Define a class Student, which holds the needed information
 If you receive a student which already exists (matching
firstName and lastName), overwrite the information
 After the end command, you will receive a city name
 Print students which are from the given city in the format:
"{firstName} {lastName} is {age} years old."
Problem: Students
24
Solution: Students (1)
25
public Student(String firstName, String lastName,
int age, String city){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.city = city;
// TODO: Implement Getters and Setters
}
Solution: Students (2)
26
List<Student> students = new ArrayList<>();
String line;
while (!line.equals("end")) {
// TODO: Extract firstName, lastName, age, city from the input
Student existingStudent = getStudent(students, firstName, lastName);
if(existingStudent != null) {
existingStudent.setAge(age);
existingStudent.setCity(city);
} else {
Student student = new Student(firstName, lastName, age, city);
students.add(student);
}
line = sc.nextLine();
}
Solution: Students (3)
27
static Student getStudent(List<Student> students, String firstName,
String lastName) {
for (Student student : students){
if(student.getFirstName().equals(firstName)
&& student.getLastName().equals(lastName))
return student;
}
return null;
}
Live Exercises
 …
 …
 …
Summary
 Classes define templates for object
 Fields
 Constructors
 Methods
 Objects
 Hold a set of named values
 Instance of a class
 https://softuni.bg/courses/programming-fundamentals
SoftUni Diamond Partners
SoftUni Organizational Partners
 Software University – High-Quality Education and
Employment Opportunities
 softuni.bg
 Software University Foundation
 http://softuni.foundation/
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University Forums
 forum.softuni.bg
Trainings @ Software University (SoftUni)
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons Attribution-NonCom
mercial-ShareAlike 4.0 International" license
License
34

11. Java Objects and classes

  • 1.
    Using Objects andClasses Defining Simple Classes Objects and Classes Software University http://softuni.bg SoftUni Team Technical Trainers
  • 2.
    Table of Contents 1.Objects 2. Classes 3. Built in Classes 4. Defining Simple Classes  Fields  Constructors  Methods
  • 3.
  • 4.
  • 5.
    Objects  An objectholds a set of named values  E.g. birthday object holds day, month and year  Creating a birthday object: 5 Birthday day = 27 month = 11 year = 1996 LocalDate birthday = LocalDate.of(2018, 5, 5); System.out.println(birthday); Create a new object of type LocalDate Object fields Object name
  • 6.
    Classes  In programmingclasses provide the structure for objects  Act as a blueprint for objects of the same type  Classes define:  Fields (private variables), e.g. day, month, year  Getters/Setters, e.g. getDay, setMonth, getYear  Actions (behavior), e.g. plusDays(count), subtract(date)  Typically a class has multiple instances (objects)  Sample class: LocalDate  Sample objects: birthdayPeter, birthdayMaria 6
  • 7.
    Objects - Instancesof Classes  Creating the object of a defined class is called instantiation  The instance is the object itself, which is created runtime  All instances have common behaviour 7 LocalDate date1 = LocalDate.of(2018, 5, 5); LocalDate date2 = LocalDate.of(2016, 3, 5); LocalDate date3 = LocalDate.of(2013, 3, 2);
  • 8.
    Classes vs. Objects Classes provide structure for creating objects  An object is a single instance of a class 8 class LocalDate day: int month: int year: int plusDays(…) minusDays(…) Class actions (methods) Class name Class fields object birthdayPeter day = 27 month = 11 year = 1996 Object name Object data
  • 9.
    Using the Built-InAPI Classes Math, Random, BigInteger ...
  • 10.
     Java providesready-to-use classes:  Organized inside Packages like: java.util.Scanner, java.utils.List, etc.  Using static class members:  Using non-static Java classes: Built-In API Classes in Java 10 LocalDateTime today = LocalDateTime.now(); double cosine = Math.cos(Math.PI); Random rnd = new Random(); int randomNumber = rnd.nextInt(99);
  • 11.
     You aregiven a list of words  Randomize their order and print each word on a separate line Problem: Randomize Words 11Check your solution here: https://judge.softuni.bg/Contests/1319/ Note: the output is a sample. It should always be different! a b b a PHP Java C# Java PHP C#
  • 12.
    Solution: Randomize Words 12 Scannersc = new Scanner(System.in); String[] words = sc.nextLine().split(" "); Random rnd = new Random(); for (int pos1 = 0; pos1 < words.length; pos1++) { int pos2 = rnd.nextInt(words.length); //TODO: Swap words[pos1] with words[pos2] } System.out.println(String.join( System.lineSeparator(), words)); Check your solution here: https://judge.softuni.bg/Contests/1319/
  • 13.
     Calculate n!(n factorial) for very big n (e.g. 1000) Problem: Big Factorial 13 50 3041409320171337804361260816606476884437764156 8960512000000000000 5 120 10 3628800 12 479001600 88 1854826422573984391147968456455462843802209689 4939934668442158098688956218402819931910014124 4804501828416633516851200000000000000000000 Check your solution here: https://judge.softuni.bg/Contests/1319/
  • 14.
    Solution: Big Factorial 14 importjava.math.BigInteger; ... int n = Integer.parseInt(sc.nextLine()); BigInteger f = new BigInteger(String.valueOf(1)); for (int i = 1; i <= n; i++) { f = f.multiply(BigInteger .valueOf(Integer.parseInt(String.valueOf(i)))); } System.out.println(f); Use the java.math.BigInteger N! Check your solution here: https://judge.softuni.bg/Contests/1319/
  • 15.
  • 16.
     Specification ofa given type of objects from the real-world  Classes provide structure for describing and creating objects Defining Simple Classes 16 class Dice { … } Class name Class body Keyword
  • 17.
    Naming Classes  UsePascalCase naming  Use descriptive nouns  Avoid abbreviations (except widely known, e.g. URL, HTTP, etc.) 17 class Dice { … } class BankAccount { … } class IntegerCalculator { … } class TPMF { … } class bankaccount { … } class intcalc { … }
  • 18.
     Class ismade up of state and behavior  Fields store values  Methods describe behaviour Class Members 18 class Dice { private int sides; public void roll() { … } } Field Method
  • 19.
     Store executablecode (algorithm) Methods 19 class Dice { public int sides; public int roll() { Random rnd = new Random(); int sides = rnd.nextInt(this.sides + 1); return sides; } }
  • 20.
    Getters and Setters 20 classDice { . . . public int getSides() { return this.sides; } public void setSides(int sides) { this.sides = sides; } public String getType() { return this.type; } public void setType(String type) { this.type = type; } } Getters & Setters
  • 21.
     A classcan have many instances (objects) Creating an Object 21 class Program { public static void main(String[] args) { Dice diceD6 = new Dice(); Dice diceD8 = new Dice(); } } Use the new keyword Variable stores a reference
  • 22.
     Special methods,executed during object creation Constructors 22 class Dice { public int sides; public Dice() { this.sides = 6; } } Overloading default constructor Constructor name is the same as the name of the class
  • 23.
     You canhave multiple constructors in the same class Constructors (2) 23 class Dice { public int sides; public Dice() { } public Dice(int sides) { this.sides = sides; } } class StartUp { public static void main(String[] args) { Dice dice1 = new Dice(); Dice dice2 = new Dice(7); } }
  • 24.
     Read studentsuntil you receive "end" in the following format:  "{firstName} {lastName} {age} {hometown}"  Define a class Student, which holds the needed information  If you receive a student which already exists (matching firstName and lastName), overwrite the information  After the end command, you will receive a city name  Print students which are from the given city in the format: "{firstName} {lastName} is {age} years old." Problem: Students 24
  • 25.
    Solution: Students (1) 25 publicStudent(String firstName, String lastName, int age, String city){ this.firstName = firstName; this.lastName = lastName; this.age = age; this.city = city; // TODO: Implement Getters and Setters }
  • 26.
    Solution: Students (2) 26 List<Student>students = new ArrayList<>(); String line; while (!line.equals("end")) { // TODO: Extract firstName, lastName, age, city from the input Student existingStudent = getStudent(students, firstName, lastName); if(existingStudent != null) { existingStudent.setAge(age); existingStudent.setCity(city); } else { Student student = new Student(firstName, lastName, age, city); students.add(student); } line = sc.nextLine(); }
  • 27.
    Solution: Students (3) 27 staticStudent getStudent(List<Student> students, String firstName, String lastName) { for (Student student : students){ if(student.getFirstName().equals(firstName) && student.getLastName().equals(lastName)) return student; } return null; }
  • 28.
  • 29.
     …  … … Summary  Classes define templates for object  Fields  Constructors  Methods  Objects  Hold a set of named values  Instance of a class
  • 30.
  • 31.
  • 32.
  • 33.
     Software University– High-Quality Education and Employment Opportunities  softuni.bg  Software University Foundation  http://softuni.foundation/  Software University @ Facebook  facebook.com/SoftwareUniversity  Software University Forums  forum.softuni.bg Trainings @ Software University (SoftUni)
  • 34.
     This course(slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution-NonCom mercial-ShareAlike 4.0 International" license License 34