Semana da Programação

R$128 de desconto!
Oferta acaba em:

0

dias

00

hrs

00

min

00

seg

Primeiras aulas do curso Java parte 2: Introdução à Orientação a Objetos

Java parte 2: Introdução à Orientação a Objetos

O problema do paradigma procedural - Introdução

Olá, meu nome é Paulo Silveira. Neste curso iremos desvendar a orientação a objetos. Veremos, dentre outros tópicos, quais são as boas práticas, o que é o encapsulamento, como se dá a comunicação entre os objetos e qual é a diferença específica entre classe e instância.

Agora que você já conhece a sintaxe básica da linguagem Java, teve contato com o Eclipse, configurou seu primeiro programa, testou interações de laços, utilizou if e for e compreendeu como funciona a declaração de variável, neste curso terá toda a base para dar o próximo passo.

O fundamento da orientação a objetos é o pilar da linguagem e trouxe a popularidade para o Java, pois há mais de vinte anos representava uma novidade no mercado. Muito embora o conceito de orientação a objetos já existisse, é no Java que ele será difundido nos espaços de corporação, agências e até mesmo no governo.

O que veremos com especial ênfase, é como funciona o encapsulamento, a orientação ao objeto, os gets e sets e como utilizados da melhor forma. Veremos, ainda, como utilizar os construtores, a palavra static e as arrays`s.

Com a base fornecida por este curso, você terá ferramentas para lidar com recursos mais avançados da orientação a objetos, e com isso, poder consumir classes de outras bibliotecas.

O problema do paradigma procedural - Paradigma procedural vs Objetos

Para entendermos a grande vantagem da orientação aos objetos, veremos quais são as dificuldades que e impulsionaram a criação desse paradigma.

Antigamente tudo era procedural, não havia o conceito de programar voltado para um objeto. Mesmo hoje, com o desenvolvimento de tantas linguagens, alguns programadores ainda utilizam técnicas arcaicas da programação procedural. Esse método ainda faz sentido em alguns ambientes, mas na maioria dos casos, isso não se aplica ao Java.

No começo da década de noventa, os programadores trabalhavam com formulários longos e times enxutos, não havia uma equipe grande de desenvolvedores trabalhando em um projeto. Quem escrevia todo o formulário, cuidava de sua validação e de seu banco de dados, muitas vezes era um único programador ou programadora. Portanto, não havia como se atentar para todos os detalhes. Hoje em dia temos programas muito complexos, e o sistema de formulário se tornou insustentável.

formulário

Iremos verificar como trabalhávamos com os formulários para entendermos a diferença de paradigma gerada pela orientação aos objetos.

Usaremos o site Wire Frame, muito utilizado para quem quer esboçar UX Design, para analisarmos um exemplo de como eram criados os formulários antigamente. Usaremos uma linguagem e sintaxe hipotéticas.Temos um formulário simples de cadastro que contém CPF, Nome e Cidade.

wireframe

Veremos como seria o código fonte desse formulário nessa linguagem imaginária. No campo CPF, poderíamos escrever que a variável cpf recebe do formulario1 o campo denominado CPF.

var cpf := formulario1->CPF

Repetir o mesmo procedimento par todos os campos do formulário.

var cpf := formulario1->CPF
var nome := formulario1->Nome
var cidade := formulario1->Cidade

Suponhamos que este seja um formulário utilizado no sistema de uma padaria. Neste ponto, poderíamos acionar uma função denominada gravar, que salvaria no banco dados as informações de cadastro do cliente.

var cpf := formulario1->CPF
var nome := formulario1->Nome
var cidade := formulario1->Cidade

gravarCliente(cpf, nome, cidade)

Segundo a linguagem hipotética, o código está funcional.

Imaginemos a seguinte situação: seu chefe pede uma validação para o campo "CPF". Da forma como o código está organizado no momento, o campo "CPF" aceita qualquer tipo de dado, como letras e números aleatórios. Em outras palavras, o que o código faz é somente guardar o input text no banco de dados, independente do conteúdo.

Poderíamos solucionar esse problema adicionando outras funções ao código. Antes da gravação no banco de dados, adicionaremos uma função que valida o CPF - existe um cálculo específico para gerar CPFs - e passa uma variável. Teríamos como retorno um dado booleano; caso seja um CPF válido (if) a informação será gravada no banco de dados. Caso contrário (else) será emitida uma mensagem de erro.

var cpf := formulario1->CPF
var nome := formulario1->Nome
var cidade := formulario1->Cidade

var sucesso = validaCpf(cpf)
if(sucesso) 
    gravarCliente(cpf,nome,cidade)
else
    mostraErro()

Não existe nenhum problema estrutural no código, e muitas vezes é dessa forma que solucionaremos questões na programação.

Mas imaginem a seguinte situação: no sistema padaria não existe apenas o formulário de cadastro, mas também um formulário de busca de clientes através do CPF, e esse CPF precisa ser validado antes da busca ser realizada.

Poderíamos começar o nosso código fonte da seguinte maneira:

var cpf := formularioBusca->CPF

buscaNoBanco(cpf)

Poderíamos utilizar a função de validação que conhecemos, basta copiá-la do código de cadastro e colá-la, fazendo pequenas alterações. Ao invés de salvar no banco de dados, iremos procurar no banco um CPF específico.

var cpf := formularioBusca->CPF

var sucesso = validaCpf(cpf)
if(sucesso)
    buscaNoBanco(cpf)
else
    mostrarErro()

Conseguimos atender as novas demandas da empresa, e o nosso código está funcional. Mas existem problemas nesse tipo de abordagem. Caso tenhamos trinta e seis formulários diferentes que articulam a informação "CPF", a nova demanda da empresa é que cada CPF seja validado, e caso não, o texto ficará em vermelho e surgirá uma mensagem de erro.

Com uma quantidade grande de formulários para configurar, teremos dificuldade em descobrir o trecho adequado do código.

Acionar o atalho "Ctrl + F" e procurar cada trecho de código que contenha a palavra "CPF" seria muito trabalhoso.

Um problema mais grave: caso entre um novo integrante na equipe e sua primeira tarefa é lidar com um novo sistema que cadastre receitas sugeridas pelos clientes. E esse novo sistema da empresa faz uso da informação do CPF dos usuários. O novo integrante terá dificuldade em validar o CPF.

Poderíamos, por exemplo, criar um manual do sistema da empresa para os novos funcionários, mas essa não é a alternativa mais simples.

O ideal é que possamos fazer uma alteração em um único local do sistema, e assim, os CPFs em todas as interfaces de usuário precisariam ser validados.

Com a orientação a objetos, a ideia de dados e funcionalidades - ou "comportamentos" - estarão interligados, gerando uma enorme facilidade na organização e manutenção de um determinado sistema.

Introdução à Orientação a Objetos - Primeira classe - Contas

Faremos o ByteBank, um projeto de banco da Alura. Para isso, precisaremos criar o sistema que o compõe. Iremos descobrir quais dados serão necessários para esse sistema.

A menor unidade que iremos trabalhar é a conta bancária, e para isso, precisaremos fazer uma breve pesquisa para sabermos do que ela é composta.

Se olharmos a definição de conta corrente no WikiPedia, descobriremos uma série de referências acerca de juros e taxas, mas a questão que iremos nos atentar é que as contas bancárias acionam informações diferentes para fins variados.

Façamos uma analogia com uma seguradora de veículos: é importante que ela tenha informações como marca, modelo, chassi e a cor do carro. Mas é irrelevante para a seguradora saber quantos cilindros o carro tem ou a versão do motor. Já para uma empresa que fabrica veículos, esses dados fazem parte do domínio do problema.

Criaremos um domínio para o nosso sistema baseado em um projeto de banco. No Eclipse, faremos um novo projeto Java intitulado bytebank. Depois, clique em "Finish".

new java project

Feito isso, será criado um novo projeto na área do Package Explorer. Ao clicarmos no projeto bytebank, veremos a pasta src.

package explorer

Lembrando: você pode selecionar "Window > Show View > Navigator". O Navigator possui uma ideia parecida com o Windows Explorer ou Finder, nele você visualizará mais diretórios internos. O Package Explorer oculta a visualização desses diretórios.

navigator

Em src, criaremos alguns códigos para guardarmos os dados sobre nossas contas bancárias. Uma característica interessante do Java é que ele nos possibilita a criação de tipos. Em um "tipo" do Java, armazenaremos todas as informações que constituem uma conta bancária.

Usaremos o Figma - um software de criação de interface do usuário - para definirmos as informações básicas de uma conta bancária.

A nossa conta possui quatro características importantes para o nosso banco: saldo, agência, número, titular.

figma

Veremos que no Java não serão guardados apenas os dados de conta bancária, mas também serão atribuídos comportamentos para a conta. Iremos definir algumas transações bancárias típicas, como realizar saques, depósitos e transferências.

O esquema que criamos no Figma pode ser reproduzido no Java, mas antes precisamos refletir: esse quadro com campos a serem preenchidos, pode ser caracterizado como uma conta? Não podemos realizar funções básicas de uma conta bancária apenas com esse quadro cinza, portanto, não se trata de uma conta, e sim, de uma especificação de um tipo conta.

Podemos fazer a seguinte analogia: a planta de uma casa não é uma casa, mas o esquema ou design de uma.

Recriaremos esse esquema de dados de conta bancária no Java. Em src, criaremos um novo arquivo chamado Conta.java.

conta.java

Faremos a especificação dos componentes do tipo Conta.

tipo Conta:
    saldo
    agencia
    numero 
    titular

Obviamente, essa não é a sintaxe de Java. Precisaremos utilizar as regras da linguagem para realizarmos com sucesso a especificação do tipo Conta. Escreveremos ao lado de Conta a palavra class. Trata-se de uma palavra-chave que define um tipo. Para indicarmos que abrimos e fechamos um bloco de informações usaremos as chaves, {}.

class Conta { 
    saldo
    agencia
    numero
    titular
}

É também necessário declarar o tipo das outras categorias da conta. Para saldo, usaremos o tipo double, pois ele armazena dados de ponto flutuante.

Os componentes agencia e numero serão do tipo int. Para finalizar, titular será uma String, que guarda um conteúdo de texto.

Acionaremos o atalho "Ctrl + S" para salvarmos nosso trabalho. Com isso, já temos um código fonte válido em Java que já foi compilado. Ao observarmos a área Navigator e selecionarmos o diretório bin, veremos o arquivo Conta.class.

Porém, não podemos iniciar a execução do programa. Para que um programa possa ser iniciado em Java, ele precisa ter o ponto de entrada public static void main(String[]) args), a classe que criamos não possui esse ponto de entrada, pois trata-se de um arquivo de suporte.

Em uma aplicação Java é comum existirem vários arquivos que se comunicam, o primeiro a ser executado contém o método main com a "assinatura" (tipo de retorno e parâmetros) acima.

Sobre o curso Java parte 2: Introdução à Orientação a Objetos

O curso Java parte 2: Introdução à Orientação a Objetos possui 187 minutos de vídeos, em um total de 58 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

  • Desconto

Premium

Desconto
  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75 R$64,33
à vista R$900 R$772
Matricule-se

Premium Plus

Desconto
  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100 R$89,33
à vista R$1.200 R$1.072
Matricule-se

Max

Desconto
  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120 R$109,33
à vista R$1.440 R$1.312
Matricule-se
Procurando planos para empresas?

Acesso completo por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas