This repository contains exercises from Applied OOP course which covers concepts related to Java Programming language like:
- Introduction to software development with Java:
- First Program in Java: Printing a Line of Text
- Modifying Our First Java Program
- Displaying Text with printf
- Another Java Application: Adding Integers
- Memory Concepts
- Arithmetic
- Decision Making: Equality and Relational Operators
- Classes and Objects:
- Object classes, objects, methods and variables (class instance)
- Declaring a method class and creating a object of class
- Declaring a single argument method
- Object variables, set methods and get methods
- Primitive data and reference data types
- Initializing objects with a constructor
- Floating point numbers and type double
- Software Engineering: Identification of classes when researched on the requirements of the problem
- Control statements:
- Algorithms
- Pseudocode
- Control Structures
- if Single-Selection Statement
- if…else Double-Selection Statement
- while Repetition Statement
- Formulating Algorithms: Counter-Controlled Repetition
- Formulating Algorithms: Sentinel-Controlled Repetition
- Formulating Algorithms: Nested Control Statements
- Compound Assignment Operators
- Increment and Decrement Operators
- Primitive Types
- GUI and Graphics Case Study: Creating Simple Drawings with JavaFX
- Essentials of Counter-Controlled Repetition
- for Repetition Statement
- Examples Using the for Statement
- do…while Repetition Statement
- switch Multiple-Selection Statement
- break and continue Statements
- Logical Operators
- Structured Programming Summary
- GUI and Graphics Case Study: Using Dialog Boxes with JavaFX
- GUI and Graphics Case Study: Drawing Rectangles and Ovals with JavaFX
- Math functions, Localdate, Random
- Program Modules in Java
- static Methods, static Fields
- Wrapper classes
- Parsing String to numbers and Date types
- Formatting data in Java
- Method Call Stack and Activation Records
- Package access and Java API Packages
- Case Study: Random-Number Generation
- Generalized Scaling and Shifting of Random Numbers
- Random-Number Repeatability for Testing and Debugging
- Scope of Declarations
- Method Overloading
- JavaFX Graphics Case Study: Colors and Filled Shapes
- Working with SceneBuilder
- Graphic components
- Naming components of the graphical interface
- Creating an interactive graphical interface
- Creating a JavaFX interactive graphical interface
- Structure of the JavaFX window
- Installing SceneBuilder
- Creating a JavaFX application
- Description of the node tree
- Building the graphical interface
- Introduction to event handling
- Arranging the components
- Node structure
- BigDecimal application for working with money
- Creating menus in SceneBuilder
- Creating reusable FXML graphics components
- Arrays, ArrayList, Matrices
- Arrays
- Declaring and Creating Arrays
- Examples Using Arrays
- Case Study: Card Shuffling and Dealing Simulation
- Enhanced for Statement
- Passing Arrays to Methods
- Case Study: Class GradeBook Using an Array to Store Grades
- Multidimensional Arrays
- Case Study: Class GradeBook Using a Two-Dimensional Array
- Variable-Length Argument Lists
- Using Command-Line Arguments
- Introduction to class Arrays and ArrayList
- GUI and Graphics Case Study: Drawing Arcs
- Algorithms for searching
- Algorithms for sorting
- Recursion, Searching, Sorting
- Presentation of recursion
- Examples: Factoriels and Fibonacci order
- Recursion and executable stack
- Recursive and iterative implementation of a method
- Examples of recursion applications.
- Array sorting with recursive algorithms
- Merge sort
- Quick sort
- Composition, Delegation
- Time Class Case Study
- Controlling Access to Members
- Referring to the Current Object’s Members with the this Reference
- Time Class Case Study: Overloaded Constructors
- Default and No-Argument Constructors
- Notes on Set and Get Methods
- Composition. Single Responsibility Principle
- Garbage Collection and Method finalize
- static Class Members
- static Import
- final Instance Variables
- Software Reusability
- Data Abstraction and Encapsulation
- Time Class Case Study: Creating user defined Packages
- Package Access
- GUI with JavaFX
- Building classes with delegation
- Strings, Characters and Regular Expressions
- Fundamentals of Characters and Strings
- Class String
- String Constructors
- String Methods length, charAt and getChars
- Comparing Strings
- Locating Characters and Substrings in Strings
- Extracting Substrings from Strings
- Concatenating Strings
- Miscellaneous String Methods
- String Method valueOf
- Class StringBuilder
- StringBuilder Constructors
- StringBuilder Methods length, capacity, setLength and ensureCapacity
- StringBuilder Methods charAt, setCharAt, getChars and reverse
- StringBuilder append Methods
- StringBuilder Insertion and Deletion Methods
- Class Character
- Class StringTokenizer
- Regular Expressions, Class Pattern and Class Matcher
- Modular Programming in Java
- The benefits of modular programming.
- Declaration of a Java Module.
- Module descriptor.
- Module directives.
- Create and run a Modular project with IntelliJ.
- The unnamed module.
- Create and run unnamed module.
- Add a Modular JAR and use it with IntelliJ
- Object-Oriented Programming: Inheritance
- Superclasses and Subclasses
- protected Members
- Relationship between Superclasses and Subclasses
- Creating and Using a CommissionEmployee Class
- Creating a BasePlusCommissionEmployee Class without Using Inheritance
- Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
- CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
- CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
- Constructors in Subclasses
- Software Engineering with Inheritance
- Object Class
- Inheritance in JavaFX
- GUI and Graphics Case Study: Displaying Text and Images Using Labels and Text
-
Create reusable JavaFX components with graphical visual editor
-
Object-Oriented Programming: Polymorphism
- Polymorphism Examples
- Demonstrating Polymorphic Behavior
- Abstract Classes and Methods
- Case Study: Payroll System Using Polymorphism
- Creating Abstract Superclass Employee
- Creating Concrete Subclass SalariedEmployee
- Creating Concrete Subclass HourlyEmployee
- Creating Concrete Subclass CommissionEmployee
- Creating Indirect Concrete Subclass BasePlusCommissionEmployee
- Demonstrating Polymorphic Processing, Operator instanceof and Downcasting
- Summary of the Allowed Assignments Between Superclass and Subclass Variables
- final Methods and Classes
- Enum type. Properties and methods.
- Case Study: Creating and Using Interfaces
- Developing a Payable Hierarchy
- Declaring Interface Payable
- Creating Class Invoice
- Modifying Class Employee to Implement Interface Payable
- Modifying Class SalariedEmployee for Use in the Payable Hierarchy
- Using Interface Payable to Process Invoices and Employees Polymorphically
- Interfaces with the Java API
- Declaring Constants with Interfaces
- Common Interfaces of the Java API
- Software Engineering Case Study: Interface implementation
- Software Engineering Case Study: Incorporating Inheritance into the ATM System
- Bad Use of Override Methods
- Contraction
- Principle of Liskov
- Inner and anonymous classes
- External class and methods for communication with internal classes
- Internal classes hide implementation
- Internal classes in methods
- Internal classes in a block of code
- Inner class as a link to an outer class
- Heredity in internal classes
- Closure and Callback software constructs
- User-defined events
- Anonymous inner classes
- Internal classes and event handling
- Application of Event Management System
- Event Handling in JavaFX
- Common event types and their corresponding interfaces
- JavaFX Event Handling Model
- Exceptions
- Exception handling.
- The Exception class.
- Try block and its application.
- Exception interception and transmission.
- User - defined exceptions with use of heredity.
- Generic data types (parametric polymorphism)
- Create parameters for the type of methods to perform identical actions with arguments of different types.
- Creating parameters for a class type.
- Reloading of parameterized by type methods with others parameterized or non-parameterized methods.
- Use templates when accurate is not needed method argument information in the method body.
- The relationship between the use of parameterized types and heredity
- The principle of GET (Consumer) -PUT (Producer) -> super-extends
- Invariance, covariance and contravariance
- Java collections
- class Arrays
- interface Collection and class Collections
- Lists - class List
- ArrayList and Iterator
- LinkedList
- Vector
- Deque interface
- Algorithmic implementations in the Collections library
- Sort algorithm
- Shuffle algorithm
- Reverse, fill, copy, max and min algorithms
- binarySearch algorithm
- AddAll, frequency and disjoint algorithms
- class Stack in pckage java.util
- PriorityQueue class and Queue interface
- Types of applications on the Set interface
- Types of Map interface applications
- Lambda Expressions
- Lambda Expressions
- Functional interfaces
- Method references
- default Interface Methods
- static Interface Methods
- Stream API
- Introduction to the Stream API
- Basic concepts
- Types of streams
- Stream Conversion
- Types of operations in IntStream
- Order of execution of operations
- Reusing Stream
- JavaFX properties, Binding, Event handling
- Introduction to JavaFX properties
- Creating JavaFX properties
- Binding JavaFX properties
- Connecting GUI Properties
- Event handling Change
- Mouse event handling methods
- Project implementation
- Construction of the graphical interface
- Edit application class
- Editing the Controller Class
- Drawing in the graphic context of a Container
- Drawing a free line
- Select color and line thickness
- Editing a drawn graphic
- Event handling
- Chain distribution of event processing
- KeyEvent Processing Methods
- Observable pattern in JavaFX Applications
- Motivation example
- Design patterns
- JavaFX Observable
- JavaFX Collections
- ComboBox
- ShoppingCart sample
- TableView control
- Use TableView with a database