Final delivery of the 2nd course: 'Java: aplicando la Orientación a Objetos', from module (a.k.a. 'formación' in spanish) 'Java Orientado a Objetos G9 - ONE', of Alura LATAM. Part of ORACLE Next Education (ONE) education program, in LATAM.
This final delivery consists of 2 projects, each one in it's own folder (using folders structure of Maven's java build automation tool):
- Course exercise; in folder:
course_java_ii. - Course challenge of an audio player app; in folder:
course_java_ii_challenge_app_audio_player.
Note
This README is mainly written in english (en), but it might have some sections in spanish (sp), since course content is in spanish.
The course covered topics such as:
- Coding in Java using the approach of Object Oriented Programming (OOP).
- Implementation of 4 pillars of OOP:
- Abstraction.
- Encapsulation.
- Inheritance.
- Polymorphism.
- Working with Class Diagrams to define appropiate 'Astraction'.
- Setting Access Modifiers to attributes and methods:
private,public,default, andprotected. - Implementing 'getters' and 'setters' to define proper 'Encapsulation'.
- Defining 'Inheritance' in classes, using statement / kewyord
extendsin the class definition; e.g.public class Cancion extends Audio { ... }. - Working with 'interfaces' to define proper structure and methods within classes, using statement / keyword
implementsin the class definition; e.g.public class Pelicula extends Titulo implements Clasificacion { ... }.
Available at 'https://app.aluracursos.com/certificate/e269c75a-aab6-46a6-b77b-b1983008d35c'.
- Estimated workload: 10h.
- Activities: 51.
- Topics:
- 'Modelando ScreenMatch'.
- 'Controlando el acceso a la escritura de datos'.
- 'Reaprovechando características y comportamientos'.
- 'Aplicando comportamientos en común'.
- 'Consolidando conocimientos'.
PROGRAM STRUCTURE.
- [Course] 'Java: aplicando la Orientación a Objetos': 'https://app.aluracursos.com/course/java-aplicando-orientacion-objetos/'.
- [Module] 'Java Orientado a Objetos G9 - ONE': 'https://app.aluracursos.com/formacion-java-grupo9-one/'.
- ORACLE Next Education (ONE) education program, in LATAM: 'https://www.oracle.com/co/education/oracle-next-education/'.
- Alura LATAM education platform: 'https://www.aluracursos.com/'.
COURSE RESOURCES.
- GitHub's project repository: 'https://github.com/alura-cursos/2032-java-aplicando-la-orientacion-a-objetos'.
- Branch for course exercises:
aula-01toaula-04. Ref.: 'https://github.com/alura-cursos/2032-java-aplicando-la-orientacion-a-objetos/tree/aula-01'. - Branch for course challenge:
aula-05. Ref.: 'https://github.com/alura-cursos/2032-java-aplicando-la-orientacion-a-objetos/tree/aula-05'.
- Branch for course exercises:
Note
This section is only for reference, for documentation purposes in case of re-visiting course notes.
This project focused on modeling a Java project with Object Oriented Programming (OOP) focus, so here I'm including the Class Diagram of the course's last project: an audio player app; in folder: course_java_ii_challenge_app_audio_player.
Note
This diagram was made using Mermaid.js in markdown files: 'https://docs.mermaidchart.com/mermaid-oss/syntax/classDiagram.html'. For using it in VS Code, ⚠ it requires an extension for rendering ⚠, such as 'Markdown Preview Mermaid Support' 'https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid'.
---
title: CLASS DIAGRAM FOR PROJECT 'course_java_ii_challenge_app_audio_player' (package name, as 'HOME', for this graphical purpose).
config:
theme: 'dark'
---
%% Class Diagrams in Mermaid.js: 'https://docs.mermaidchart.com/mermaid-oss/syntax/classDiagram.html'.
classDiagram
direction LR
%% note "General note."
%% note for Cancion "Method 'getClasificacion()' is inherited and overwritten for class SPECIFIC definition."
%% note for Podcast "Method 'getClasificacion()' is inherited and overwritten for class SPECIFIC definition."
%% HOME, as package 'course_java_ii_challenge_app_audio_player'.
namespace HOME {
class App ["App"] {
<<Abstract>>
}
}
%% Package 'course_java_ii_challenge_app_audio_player.models'.
namespace HOME.models {
class Audio ["Audio"] {
<<Abstract>>
-String titulo
-int totalDeReproducciones
-int totalDeMeGusta
-int clasificacion
'getters'()
+getTitulo() String
+getTotalDeReproducciones() int
+getTotalDeMeGusta() int
+getClasificacion() int
'setters'()
+setTitulo(String titulo) void
-setTotalDeReproducciones(int totalDeReproducciones) void
-setTotalDeMeGusta(int totalDeMeGusta) void
+setClasificacion(int clasificacion) void
+reproduce() void
+meGusta() void
}
class Cancion ["Cancion"] {
<<Abstract>>
-String album
-String cantante
-String genero
'getters'()
'setters'()
+getClasificacion() int
}
class Podcast ["Podcast"] {
<<Abstract>>
-String presentador
-String descripcion
'getters'()
'setters'()
+getClasificacion() int
}
}
%% Package 'course_java_ii_challenge_app_audio_player.computations'.
namespace HOME.computations {
class MisFavoritos ["MisFavoritos"] {
<<Abstract>>
+adicione(Audio audio) void
}
}
%% Audio <|-- Cancion : implements
%% Audio <|-- Podcast : implements
Cancion --|> Audio : implements
Podcast --|> Audio : implements
App --> Cancion : calls
App --> Podcast : calls
App --> MisFavoritos : calls
MisFavoritos --> Audio : calls
Notes:
- In class
Cancion, methodgetClasificacion()is inherited from 'super class' / 'parent' classAudio, and it's overwritten for this class SPECIFIC implementation." - In class
Podcast, methodgetClasificacion()is inherited from 'super class' / 'parent' classAudio, and it's overwritten for this class SPECIFIC implementation."
Note
A quick way to get an idea of relationships between classes is to review the import statements, usually at the header of each Class (.java) file. E.g., in the App.java file:
Made with contrib.rocks.
a1t0ghb |
|---|


