Programação Orientada a Objetos
[Classes]

Computação II - Ciência da Computação


Prof.: Danilo S. Carvalho

Nessa aula, vamos começar a nossa jornada pelo mundo da Programação Orientada a Objetos.


A cada passo, aprenderemos um novo conceito que tornará nossa maneira de programar mais interessante e abriremos nossa visão para o código que encontramos nos grandes projetos do mundo real (desde o fim dos anos 90).


Ao fim da aula, saberemos como organizar conceitos como classes e como implementar isso no Java.

Antes de entender como programar orientado a objetos


Vamos primeiro entender como orientar nossa forma de pensar aos objetos...

Imagine que queremos construir um sistema que vai ajudar na organização de uma biblioteca.

Primeiramente, precisamos identificar os "objetos" que fazem parte do "mundo" da biblioteca, tal que possamos representá-los no campo das ideias.

Observamos inicialmente que a biblioteca possui livros e pessoas que a frequentam.

Anotamos então os livros como um conceito geral de "Livro", representando um livro qualquer.

Fazemos a mesma coisa com as pessoas, anotando um conceito geral para "Pessoa".

Chamamos os conceitos que obtemos das nossas anotações de classes. São elas que vão determinar os tipos de dados que iremos manipular em nosso programa. Começaremos pela classe Livro.

Para cada classe, determinamos os atributos que distinguem o respectivo conceito das outras coisas que encontramos nesse mesmo "mundo" (no caso, a biblioteca).

Por exemplo: um livro possui um título, um autor, num. de páginas, um assunto, etc.

Da mesma forma, a classe Pessoa pode ser definida.

Uma pessoa possui um documento de identificação (ex: CPF), nome, data de nascimento, endereço, telefone, etc.

Assim, acabamos de criar duas classes de objetos que fazem parte da organização da nossa biblioteca.

Vamos ver como colocamos isso no código Java?

                    
                    public class Livro {  // Declara classe com visibilidade global
                        String titulo;  // Atributo da classe (campo)
                        String autor;
                        int numPaginas;
                        String assunto;
                    }
                    
                

Declaramos nossa classe usando a palavra chave class como de costume.

Mas dessa vez ignoramos os métodos. Novamente, a palavra chave public significa que a classe é acessível por qualquer outra classe.

Cada atributo é declarado em uma linha, com seu respectivo tipo, tal qual uma variável.

Nosso livro possui um título, autor, num. de páginas, e assunto.

                    
                    public class Pessoa {  // Declara classe com visibilidade global
                        String cpf;
                        String nome;
                        LocalDateTime dataNascimento; // Atributos podem ser de qualquer tipo
                        String endereço;
                        String telefone;
                    }
                    
                

A classe Pessoa é declarada da mesma maneira, com seus respectivos atributos.

Os atributos podem ser de qualquer tipo permitido na linguagem Java e são chamados oficialmente de campos nessa linguagem.

A nossa classe torna-se então um novo tipo, que podemos usar como os demais tipos não primitivos.

Criamos uma pessoa assim como criamos uma String, e acessamos os atributos usando um ponto "." e o nome do atributo.

                    
                    Pessoa pessoa1 = new Pessoa();
                    pessoa1.nome = "Albert Einstein";
                    
                

Agora podemos organizar nosso código usando conceitos e criar nossos próprios tipos.


Tentem usar o mesmo tipo de raciocínio para criar classes para os conceitos que podem ser aplicados em um restaurante, por exemplo.

Perguntas:

  1. O que acontece com os atributos da classe quando criamos uma nova instância com new? Quais seriam os valores?
  2. Quando criamos uma nova instância de uma classe com new, alocamos a memória para armazenar os seus dados. Como liberamos a memória depois?

Até a próxima aula!