Object Oriented Programming Laboratory

LPOO :: 2019/20 2nd Semester

Information

Contents

Week Theory Classes Practice Sessions
1 Course Presentation.
A gentle introduction to Git:
- Introduction.
- Basics and Git as a local VCS.
- Branches, remotes and workflows.
Java: Quick introduction.
LPOO | Git | Java
2 Java:
- Types, literals and variables.
- Loop and conditional blocks.
- A small introduction to classes and the Hello World example.
- Collections.
Dependency Management using Gradle.
Java/Git
Exercises | Solutions
3 Unit Testing:
- Test levels and test types.
- Unit Testing
- JUnit
- Mocks and Stubs using Mockito
- Test Coverage and Mutation Testing
Java
Exercises | Solutions
4 SOLID Principles:
- [SRP] Single Responsibility
- [OCP] Open/Closed
- [LSP] Liskov Substitution
- [ISP] Interface Segregation
- [DIP] Dependency Inversion
UML - Class Diagrams:
- Classes
- Inheritance, Abstract Classes and Interfaces
- Associations and Aggregation
Java
Exercises | Solutions
5 Hero project the SOLID way:: A live coding experience
Repository for SOLID Hero: GitHub
Unit Testing
Exercises | Solutions
6 Design Patterns:
- Factory-Method
- Command
- Composite
- Observer
- Strategy
Repository for Design Patterns #1 Hero: GitHub
Annotated Class (portuguese only): Class
SOLID
Exercises | Solutions
7 Refactoring:
- Code Smells
- Refactoring Techniques
Design Patterns
Exercises | Solutions
8 Design Patterns:
- State
- Adapter
- Decorator
- Singleton
Refactoring
Exercises | Solutions
9 Easter
10 Java Generics:
- Generic methods
- Generic classes
- Variance
- Wildcards
Architectural Patterns:
- MVC Pattern
Examples:
- Hero MVC
- Hero MVC using Generic Observer
Project
11 Java Threads:
- Processes
- Threads
- Synchronization
Java Input/Output:
- Streams
- File Streams
- Resources
Examples:
- Hero with threads and testing Lanterna using Mockito
Project
12 UML - Sequence Diagrams:
- Elements
- Messages
- Fragments
- Gates
UML - State Diagrams:
- States
- Transitions
- Composite States
Design Patterns:
- Abstract Factory
Project
13 Burning of the Stripes
14 Inheritance vs. Composition:
- Multiple Inheritance
- Interfaces
- Java Defaults
- Composition
- Delegation
Example:
- Inheritance Composition
Project
15 Property Based Testing:
- What is PBT?
- Arbitraries
- Statistics
- Shrinking
- PBT in Java using jqwik
Project
16
Project Demo