Table of Contents
1. Objects: Set of Data Fields
2. Classes: Define the Object Structure
3. Built-in Classes
4. Defining Simple Classes
Fields
Constructors
Methods
class
DateTime
Day: int
Month: int
Year: int
AddDays(…)
Subtract(…)
object
peterBirthday
Day = 27
Month = 11
Year = 1996
Objects
An object holds a set of named values
E.g. birthday object holds day, month and year
Creating a birthday object:
9
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
10
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
11
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
12
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
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
14
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
15
Note: the output is a sample.
It should always be different!
a b
b
a
PHP Java C#
Java
PHP
C#
Solution: Randomize Words
16
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));
Calculate n! (n factorial) for very big n (e. g. 1000)
Problem: Big Factorial
17
50
3041409320171337804361260816606476884437764156
8960512000000000000
5 120 10 3628800 12 479001600
88
1854826422573984391147968456455462843802209689
4939934668442158098688956218402819931910014124
4804501828416633516851200000000000000000000
Solution: Big Factorial
18
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!
Specification of a given type of objects
from the real-world
Classes provide structure for describing
and creating objects
Defining Simple Classes
20
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.)
21
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
22
class Dice {
private int sides;
public void roll() { … }
}
Field
Method
Store executable code (algorithm)
Methods
23
class Dice {
public int sides;
public int roll() {
Random rnd = new Random();
int sides = rnd.nextInt(this.sides + 1);
return sides;
}
}
Getters and Setters
24
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
25
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
26
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)
27
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
28
Solution: Students (1)
29
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)
30
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)
31
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;
}
…
…
…
Summary
Classes define templates for objects
Fields
Constructors
Methods
Objects
Hold a set of named values
Instances of a classes
…
…
…
Next Steps
Join the SoftUni "Learn To Code" Community
Access the Free Coding Lessons
Get Help from the Mentors
Meet the Other Learners
https://softuni.org
Editor's Notes
Hello, I am Svetlin Nakov from SoftUni (the Software University). We are here again with my colleague George Georgiev, to continue teaching this free Java Foundations course, which (as you already know) covers important concepts from Java programming, such as arrays, lists, maps, methods, strings, classes, objects and exceptions, and prepares you for the "Java Foundations" official exam from Oracle.In this lesson your instructor George will explain the concept of objects and classes and will give you real world examples with live Java coding.In programming objects hold a set of data fields. For example, the “Peter’s birthday” object could hold a day (27), plus a month (11, which is November), plus a year (1996).
In Java, developers can define classes to describe a particular structure of an object. For example, a DateTime class could contain a day, plus a month, plus a year, all of which are integers. Classes in Java typically hold fields (to keep object’s data) + constructors (to create and initialize objects) + methods (to implement functionality, related to object’s data).
Let's learn how to use objects and simple classes in Java through live coding examples, and later solve some hands-on exercises to gain practical experience.
Let's start!
Before the start, I would like to introduce your course instructors: Svetlin Nakov and George Georgiev, who are experienced Java developers, senior software engineers and inspirational tech trainers.
They have spent thousands of hours teaching programming and software technologies and are top trainers from SoftUni.
I am sure you will like how they teach programming.
Most of this course will be taught by George Georgiev, who is a senior software engineer with many years of experience with Java, JavaScript and C++.
George enjoys teaching programming very much and is one of the top trainers at the Software University, having delivered over 300 technical training sessions on the topics of data structures and algorithms, Java essentials, Java fundamentals, C++ programming, C# development and many others.
I have no doubt you will benefit greatly from his lessons, as he always does his best to explain the most challenging concepts in a simple and fun way.
Before we dive into the course, I want to show you the SoftUni judge system, where you can get instant feedback for your exercise solutions.
SoftUni Judge is an automated system for code evaluation. You just send your code for a certain coding problem and the system will tell you whether your solution is correct or not and what exactly is missing or wrong.I am sure you will love the judge system, once you start using it!
// Solution to problem "01. Student Information".
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
int age = Integer.parseInt(sc.nextLine());
double grade = Double.parseDouble(sc.nextLine());
System.out.printf("Name: %s, Age: %d, Grade: %.2f",
name, age, grade);
}
}
Did you like this lesson? Do you want more?Join the learners' community at softuni.org.Subscribe to my YouTube channel to get more free video tutorials on coding and software development.
Get free access to the practical exercises and the automated judge system for this coding lesson.Get free help from mentors and meet other learners.Join now! It's free.SOFTUNI.ORG