Curso POO Java #09b - Exercício prático POO em Java

Curso POO Java #09b - Exercício prático POO em Java

Welcome to the Java Object-Oriented Programming Course

Introduction to the Practical Exercise

  • The instructor welcomes students to the ninth lesson of their Java object-oriented programming course, emphasizing its practical nature.
  • After eight theoretical lessons, this session marks the first exercise where students are encouraged to actively participate and complete an assignment.

Educational Opportunities

  • The instructor mentions a technical education system that offers quality courses in computer science for those without a high school diploma.
  • Students with a technical degree can prepare for military entrance exams, highlighting various opportunities available in fields like programming and networking.

Exercise Overview

  • The main exercise involves creating a Pessoa (Person) class with attributes: name, age, and gender.
  • Students are instructed to implement encapsulation by making all attributes private and creating appropriate getter methods.

Class Relationships

  • A second class called Livro (Book) will be created, establishing a relationship between Pessoa and Livro.
  • The Livro class will have attributes such as title, total pages, current page, open status (boolean), and reader (an instance of Pessoa).

Interface Implementation

  • An interface named Publicacao (Publication) is introduced with methods: open, close, flip through pages, and go back a page.
  • This interface is designed to standardize interactions across different publication types like books or magazines.

Practical Application Encouragement

  • Students are urged to pause the video and work alongside the instructor on their NetBeans IDE while developing their classes based on provided diagrams.
  • Emphasizing practice over passive learning, the instructor stresses that true understanding comes from hands-on experience rather than merely watching tutorials.

Project Setup Instructions

Creating Classes and Interfaces in Programming

Defining the Person Class

  • The speaker introduces two classes: Pessoa (Person) and Livro (Book), along with a new interface called Publicação (Publication).
  • The attributes of the Pessoa class are defined as private, including nome (name), idade (age), and sexo (gender).
  • A constructor is created for the Pessoa class to initialize these attributes. An additional method, "fazer aniversário" (celebrate birthday), is also defined to increment age by one.
  • The speaker emphasizes using object-oriented programming principles, particularly avoiding simple variable usage for attributes, promoting encapsulation.

Defining the Book Class

  • In the Livro class, several private attributes are established: titulo (title), autor (author), total pages (total de páginas), current page (página atual), a boolean indicating if it’s open (aberto) and a reference to a reader (leitor) which is an instance of the Pessoa.
  • A constructor for the Livro class initializes all attributes. Default values are set such that when instantiated, the book starts closed with zero pages read.

Implementing Methods in Book Class

  • The speaker discusses creating methods within the book class to manage its state, including details about how to return information regarding the book's status.
  • A special method called "toString" is introduced to display all relevant data about the book clearly.

Creating Interface Methods

  • The interface methods are defined: open (abrir), close (fechar), look at a page (olhar) advance page (avançar página) and go back a page (voltar página).
  • Implementation of these abstract methods in the Livro class is required; errors arise if not implemented correctly.

Finalizing Code Structure

  • The implementation of methods includes opening and closing books while managing their states effectively through boolean flags.
  • Parameters are passed into methods for navigating through pages. Current page tracking is emphasized as crucial for user experience.

Practical Application in Main Class

  • Transitioning to practical examples, instances of people and books are created within a main class context.
  • Arrays for both persons and books are initialized; constructors require specific parameters like name, age, gender for persons and title, author, total pages for books.

Overview of Book Details and Execution

Introduction to Books

  • The speaker introduces a beginner's book by Pedro Paulo, which has 500 pages.
  • Mentions another advanced book by Maria Cândido with 800 pages, also associated with Pedro.

Displaying Book Details

  • Discusses the need to adapt the display of book details within the program.
  • Emphasizes showing the title and total pages on screen while executing the program.

Object Reference and Data Display

Accessing Object Properties

  • Explains how to access properties of an object (e.g., reader's name).
  • Shows how to include additional reader information such as age and gender in the output.

Output Formatting

  • Suggests improvements for displaying total pages and current page status clearly.

Debugging Input Issues

Common Errors in Input

  • Highlights that if input does not match exactly, it may lead to errors during execution.

Navigating Through Pages

Page Navigation Logic

  • Describes logic for navigating through book pages, ensuring users cannot exceed total page limits.

Error Handling for Invalid Pages

  • Discusses error handling when attempting to navigate beyond available pages in a book.

Managing Multiple Books and Readers

Aggregation Concept

  • Introduces aggregation by allowing multiple readers (Pedro and João) to read different books simultaneously.

Class Interactions

  • Explains how classes interact (e.g., methods from 'Pessoa' class used in 'Livro').

Encouragement for Practice

Learning Through Practice

  • Encourages viewers who are struggling to pause and practice coding exercises independently.

Project Setup Guidance

  • Advises on setting up projects correctly, including creating necessary classes like 'Pessoa' and 'Livro'.

Simplifying Code Structure

Code Efficiency

Understanding Object-Oriented Programming: Encapsulation and Inheritance

Key Concepts in Object-Oriented Programming

  • The current focus is on encapsulation, which is essential for understanding object-oriented programming (OOP). The next lesson will introduce inheritance, the second pillar of OOP.
  • Emphasis on taking time to master exercises related to encapsulation before moving on. A solid grasp of interfaces is crucial for comprehending more advanced topics like inheritance.

Course Resources and Support

  • Encouragement to engage with course materials through the provided playlist and video course website. Updates are made regularly to ensure all necessary information is available for effective learning.
Video description

Nessa aula de POO, vamos fazer um exercício de Programação Orientada a Objeto em Java com tudo aquilo que aprendemos até aqui. Gostou da aula? Então torne-se um Gafanhoto APOIADOR do CursoemVídeo acessando o site apoie.me/cursoemvideo Nós do CursoemVideo sempre recomendamos assistir a aula completa, mas se quiser aprender diretamente uma parte específica, clique nos marcadores de tempo a seguir: 0:19 - Qual é o assunto da aula? Aula do Curso de Programação Orientada a Objetos POO criado pelo professor Gustavo Guanabara para o portal CursoemVideo.com. Curso em Vídeo Seja um apoiador: http://apoie.me/cursoemvideo Site: http://www.cursoemvideo.com YouTube: http://www.youtube.com/cursoemvideo Facebook: http://www.facebook.com/cursosemvideo Twitter: http://twitter.com/cursosemvideo Google+: http://plus.google.com/112666558837414979080 Patrocínio HOSTNET: http://www.hostnet.com.br EDUCANDUS: http://www.sistemaeducandus.com.br GAFANHOTOS: http://apoie.me/cursoemvideo Ask Rufus de Audionautix está licenciada sob uma licença Creative Commons Attribution (https://creativecommons.org/licenses/by/4.0/) Artista: http://audionautix.com/