Você está na página 1de 16

AULA TEÓRICA 1

O que é Programação Orientada a Objetos?

A Programação Orientada a Objetos (POO) tem o objetivo de


aproximar o mundo digital do mundo real. Abaixo, segue a evolução da
linguagem de programação até o desenvolvimento da POO.

1. Programação de Baixo Nível


(linguagem de máquina):
Complicada e trabalhosa.

2. Programação Linear: Instruções


de cima para baixo, porém
muito limitada.

3. Programação Estruturada:
Permitia pequenos pedaços de
programação linear, mas
organizados de uma forma que
poderia ser executada sem
seguir a ordem linear das
coisas. Isso deu origem a
sistemas.

4. Programação Modular: permite


a criação de pequenos
módulos estruturados,
valorizando dados e
funcionalidades, e colocar eles
em cápsulas protegidas, que
poderiam compor sistemas
cada vez maiores

5. Programação Orientada a
Objetos: ampliou os conceitos
da programação Modular.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 1


Alan Key (biólogo e matemático) é o pai da POO. Ele usou conceitos
de Biologia e o raciocínio lógico para desenvolver a linguagem com foco
em objetos. A primeira linguagem com essa característica foi a SmallTalk.

Vantagens da POO:

Confiável: O isolamento entre as partes gera software seguro. Ao


alterar uma parte, nenhuma outra é afetada.

Oportuno: Ao dividir tudo em partes, várias delas podem ser


desenvolvidas em paralelo.

Manutenível: Atualizar um software é mais fácil. Uma pequena


modificação vai beneficiar todas as partes que usarem o objeto.

Extensível: O software não é estático. Ele deve crescer para


permanecer útil.

Reutilizável: Podemos usar objetos de um sistema que criamos em


um outro sistema futuro.

Natural: Mais fácil de entender. Você se preocupa mais na


funcionalidade que nos detalhes de implementação.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 2


AULA TEÓRICA 2
O que é um Objeto?

Um objeto é uma coisa material ou abstrata que pode ser percebida


pelos sentidos e descrita por meio das suas características,
comportamentos e estado atual.

Por exemplo, uma caneta é um objeto, mas sabemos que podemos


ter diferentes tipos de caneta (designs diferentes, cores diferentes etc),
ou seja, vários objetos da Classe Caneta. Então, há uma diferenciação
entre Classe e Objeto. A Classe Caneta pode ser entendida como a ideia
do que é uma caneta, logo, deve responder as seguintes questões:

1. O que a caneta tem? (Atributos)


Modelo, Cor, Ponta, Quantidade de Carga, Tampa
2. O que a caneta faz? (Métodos)
Escrever, Rabiscar, Pintar, Desenhar, Tampar, Destampar
3. Qual é o estado da caneta? (Estado)
Tampada, Destampada, Com 50% de Carga

Entende-se que, todo objeto da Classe Caneta terá Atributos,


Métodos e Estado.

Classe Caneta
modelo: Caractere
cor: Caractere //vermelha, azul, preta
ponta: Real //ponta 0.5, 0.7 etc
carga: Inteiro //75%, 50% (Nesse caso, estamos tratando carga já na forma de %
tampada: Lógico // verdadeiro ou falso
Metodo rabiscar() //os parênteses indicam que todo método pode receber parâmetros
Se (tampada) então
Escreva(“ERRO”)
senão
Escreva(“Rabisco”)
Fimse
FimMetodo
Metodo tampar()
tampada=verdadeiro
FimMetodo
Fim Classe

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 3


No exemplo anterior, não criamos objeto nenhum. Apenas
idealizamos o objeto caneta. Abaixo, criamos os objetos c1 e c2,
pertencentes a mesma classe Caneta, definindo os valores específicos
dos atributos de c1 e c2.

RESUMO
Classe
Em resumo, uma classe define os
atributos e métodos comuns que
serão compartilhados por um objeto.

Objeto
É a instância de uma Classe.

IMPORTANTE!
Na POO, o conceito de abstração é muito importante, pois ao trabalhar
apenas com os atributos de interesse para cada situação, simplificamos
questões muito mais complexas. Por exemplo, para a classe Aluno, os
atributos mais importantes são, por exemplo : Matrícula e Nome. No entanto,
sabemos que um aluno também possui uma Cor de Pele, Cor dos Olhos,
Altura, Peso etc. Apesar disso, abstraímos esses outros atributos, pois não são
de nosso interesse nesta situação.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 4


AULA PRÁTICA 2
O que é um Objeto?

2.1 Criação da Classe Caneta

LEGENDA
Atributos
Métodos

Nessa etapa, não criamos nenhum objeto caneta de fato, apenas


a ideia do que é uma caneta, isto é, a Classe Caneta. Através da
abstração, definimos quais são os atributos principais desta classe
(modelo, cor, ponta, carga e tampada). Além disso, criamos alguns
métodos que descrevem algumas das ações possíveis (tampar,
destampar, rabiscar) de serem realizadas com objetos da Classe Caneta.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 5


2.2 Criação do Objeto C1 da Classe Caneta

LEGENDA
Instanciando o Objeto C1 da Classe Caneta
Definindo os valores dos Atributos de C1

Nessa etapa, criamos o Objeto c1 da Classe Caneta, instanciando


na linha 4 e definindo os valores dos atributos de c1 nas demais linhas.

Após criar o método abaixo no arquivo mostrado em 2.1 Criação da


Classe Caneta, podemos chamá-lo no arquivo 2.2 Criação do Objeto C1
da Classe Caneta.

2.3 Criação do Método Status() na Classe Caneta (2.1)

2.4 Chamando o Método Status() após a Criação do Objeto C1 (2.2)

Chamando Atributo
Chamando Método (tem parênteses)

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 6


AULA TEÓRICA 3
O que é visibilidade em um Objeto?

O Diagrama de Classes é o diagrama mais famoso da Linguagem


de Modelagem Unificada (UML). Abaixo, segue um exemplo do
Diagrama da Classe Caneta:

CLASSE
A idealização do que é
ser uma Caneta

ATRIBUTOS
(O que a Caneta tem?)

MÉTODOS
(O que a Caneta faz?)

Modificadores de Visibilidade

A visibilidade indica o nível de acesso aos componentes internos


(atributos e métodos) de uma classe. Há três tipos de modificadores de
visibilidade:

Público (+): A classe atual e todas as outras classes


têm acesso.

Privado (-): Somente a classe atual tem acesso.

Protegido (#): A classe atual e todas as subclasses


têm acesso.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 7


3.1 Criação da Classe Caneta definindo os Níveis de Visibilidade
Classe Caneta
publico modelo: Caractere
publico cor: Caractere
Modificadores de Visibilidade

privado ponta: Real


protegido carga: Inteiro
protegido tampada: Lógico
publico Metodo escrever()

FimMetodo
privado Metodo rabiscar()

FimMetodo
FimClasse

c1= nova Caneta


(+) Públicos c1.modelo = “BIC cristal”
c1.cor = “Azul”
(-) Privado
c1.ponta = 0.5
(#) Protegido
c1.carga = 80
(+) Público c1.escrever()
(-) Privado c1.rabiscar()

No exemplo acima, apenas os atributos modelo e cor poderão ser


acessados e mudados pelo usuário, pois foram definidos como público.
O atributo ponto, definido como privado, não poderá ser acessado ou
alterado da maneira padrão, pois a alteração poderá ocorrer somente
dentro da Classe Caneta. Por último, o atributo carga está definido como
protegido, logo, poderemos acessá-lo simplesmente por estarmos
criando um objeto c1 que faz parte da Classe Caneta. Isso ocorre
apenas no JAVA, no caso do PHP, não poderíamos acessar o atributo
carga. O mesmo ocorre com os métodos escrever() e rabiscar().
Portanto, as linhas em que o nível de visibilidade foi escrito em vermelho
no exemplo acima serão inválidas.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 8


AULA PRÁTICA 3
O que é visibilidade em um Objeto?

3.2 Classe Caneta sem Modificadores de Visibilidade

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 9


3.3 Trecho da Aula 02 em que instanciamos o objeto c1 e chamamos
o método status()

3.4 Saída do Console após a Execução do Código em 3.3


(status de c1)

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 10


3.5 Classe Caneta com Modificadores de Visibilidade

3.6 Modificação de 3.3

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 11


No exemplo mostrado em 3.6, após a declaração do nível de
visibilidade dos atributos da Classe Caneta em 3.5, não conseguimos
acessar e modificar o atributo “ponta”, pois foi definido como privado.
No entanto, os atributos definidos como protegidos podem ser acessados
e modificados porque estamos instanciando um objeto c1 que pertence
a Classe Caneta.

É importante ressaltar que, a linha 7 está no formato de comentário


no exemplo 3.6 porque o programa apresentaria erro na execução, visto
que ponta é um atributo privado. Abaixo, segue a saída do programa
para o código apresentado em 3.6:

3.7 Modificação de 3.3

IMPORTANTE!
O mesmo ocorre no caso dos métodos. Só poderão ser acessados
aqueles definidos como públicos ou protegidos, mas não os privados.
Se o atributo tampada for privado, mas os métodos tampar() e
destampar() forem públicos, conseguiremos alterar o atributo
tampada para true ou false (booleano) invocando os métodos.

c1.tampada = true //não funcionará se o atributo tampada for privado

c1.tampar() //mudará o atributo tampada para true se o atributo


tampar for protegido ou público, mesmo que o atributo tampada seja
privado.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 12


AULA TEÓRICA 4
Métodos Especiais

4.1 Métodos Acessores - Getters

Sem Get Com Get Descrição

O método get acessa a


informação e retorna o
valor de determinado
atributo sem que o
usuário tenha acesso
direto a ele. Isto é, ele
permite o acesso a
informações privadas
ou protegidas, mas
continua garantindo a
segurança.
4.2 Métodos Modificadores - Setters

Sem Set Com Set Descrição

O método set permite a


modificação do valor
de um atributo privado
ou protegido, sem
comprometer a sua
segurança. Importante:
Geralmente, o método
set precisa de um
parâmetro para poder
funcionar. No exemplo,
o parâmetro é doc
entre parênteses.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 13


Caneta Classe Caneta
publico modelo: Caractere
+ model
privado ponta: Real
- ponta
publico Metodo getModelo()
retorne modelo
FimMetodo
publico Metodo setModelo(m: Caractere)
modelo = m
FimMetodo
publico Metodo getPonta()
+ getModelo()
retorne ponta
+ setModelo(m)
FimMetodo
+ getPonta()
publico Metodo setPonta(p: Real)
+ setPonta(p) ponta = p
FimMetodo
FimClasse

c1 = nova Caneta
Apesar de ponta ser c1.setModelo(“BIC Cristal”)
um atributo privado, o c1.setPonta(0.5)
método setPonta() é
Escreva(c1.getModelo())
público.
Escreva(c1.getPonta())

No exemplo acima, definimos o atributo ponta da Classe Caneta


como privado. Portanto, ao criarmos um objeto c1 pertencente a essa
Classe, não poderemos acessar e atualizar o atributo ponta por meios
convencionais, isto é, usar o comando direto c1.ponta = 0.5 não
funcionará neste caso. Para isso, usamos o método c1.setPonta(0.5), pois
esse método foi definido como público na Classe Caneta e funciona
como um intermediário no processo de mudança do valor desse atributo,
visto que o corpo do método indica que, após executado, o valor da
ponta será atualizado para o valor p. Nesse caso, p=0.5.

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 14


4.3 Método Construtor - Construct

DEFINIÇÃO
O método construtor tem o objetivo de executar uma tarefa sem que o
usuário precise fazer uma chamada ao método. Seguindo o exemplo da
caneta, se criarmos um método construtor na Classe Caneta, ele será
executado toda vez que instanciarmos um objeto que pertença a essa
Classe. Dentro do método construtor, podemos definir, por exemplo,
atributos iniciais.

Exemplo 1: Construct sem parâmetros


Classe Caneta
/* Atenção: aqui, o foco é apenas no estudo do método construtor, por
isso não foram exibidos os atributos da classe nesse exemplo. */
Metodo construtor ()
cor=”Azul”
tampar() c1 = nova Caneta
FimMetodo
Instanciando um objeto
FimClasse c1 já é criado com a
cor azul e tampada.

Exemplo 2: Construct com parâmetros

Classe Caneta
/* Atenção: aqui, o foco é apenas no estudo do método construtor, por
isso não foram exibidos os atributos da classe nesse exemplo. */
Metodo construtor (m: Caractere, c: Caractere, p: Real)
setModelo(m)
setCor(c)
setPonta(p) m c p
tampar()
c1 = nova Caneta(“BIC”,”Azul”,0.5)
FimMetodo
FimClasse
Instanciando um objeto
Com os parâmetros solicitados pelo
método construtor

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 15


AULA PRÁTICA 4
Métodos Especiais

Algoritmo em Java Algoritmo estudado


Classe Caneta
publico modelo: Caractere
privado ponta: Real
publico Metodo getModelo()
retorne modelo
FimMetodo
publico Metodo setModelo(m: Caractere)
modelo = m
FimMetodo
publico Metodo getPonta()
retorne ponta
FimMetodo
publico Metodo setPonta(p: Real)
ponta = p
FimMetodo
FimClasse

Curso Java POO – Gustavo Guanabara (Anotações – Karla Silva) 16

Você também pode gostar