-
Apresentar os fundamentos para o desenvolvimento de softwares modernos seguindo o paradigma de programação orientada a objetos (POO).
-
Paradigma: define um modelo ou padrão a ser seguido.
-
POO: define um modelo para construção de software que é seguido mundialmente.
Aulas expositivas e práticas em laboratório, com aplicação da teoria no desenvolvimento de pequenos projetos.
-
Média igual ou superior a 6 e pelo menos 75% de presença.
-
Atividades realizadas em sala de aula e no ambiente virtual de aprendizagem, a soma delas contabilizando 10 pontos por bimestre.
-
Uma prova teórico-prática valendo 10 pontos por bimestre.
-
A Nota Final é a média aritmética das notas dos bimestres.
-
Recuperação: Exame final teórico-prático.
-
Desenvolver software não é uma tarefa fácil.
-
Desenvolver programas para resolver problemas reais e cada vez mais complexos.
-
Por onde começar?
-
Como transformar suas ideas em código?
-
Como organizar o código?
-
Quais partes do programa devem ser desenvolvidas primeiro?
-
Como identificar estas partes do programa e desenvovê-las isoladamente?
-
Como unir as partes depois de prontas?
-
Alterações indiscriminadas tornam o código um emaranhado de linhas.
-
POO, conceitos e práticas de engenharia de software:
-
minimizar a quantidade de bugs (erros);
-
permitir que o software seja desenvolvido em equipe;
-
permitir que o software seja desenvolvido em partes independentes;
-
facilitar a manutenção de código;
-
-
POO, conceitos e práticas de engenharia de software:
-
reduzir custo, tempo de construção, qualidade e segurança, e outros;
-
diminuir a distância entre o que o código representa com o que de fato ele faz;
-
etc.
-
-
Forma de escrever código vem evoluindo há décadas.
-
Vários paradigmas de programação têm sido desenvolvidos.
-
Programação não Estruturada
-
um código escrito usando tal paradigma é chamado pejorativamente de código espaguete
-
um exemplo é a linguagem Assembly
-
-
Outras formas de desenvolver programas foram então surgindo.
-
Programação Estruturada: primeiro a ser aprendido em lógica de programação.
-
Um código estruturado permite visualizar mais facilmente o fluxo lógico de execução de um programa.
💡
|
O paradigma estruturado é também definido como "a atitude de escrever código com a intenção de se comunicar com humanos e não com máquinas" [Unstructured]. Ou seja, um dos grandes objetivos de um código é que ele seja legível para outros programadores. |
-
Paradigma estruturado ainda peca em muitos pontos:
-
reutilização de código (Don’t Repeat Yourself) e avitando a famigerada "Programação Copia e Cola" 😩
-
-
Paradigma estruturado ainda peca em muitos pontos:
-
permitir proteger tanto dados quanto determinadas partes do código de serem usados de maneira indevida; etc.
-
total = 0
funcao soma_numeros(){
faça {
imprime("Digite um número: ")
leia(numero)
total = total + numero
mostra_subtotal()
} enquanto (numero != 0)
}
funcao mostra_subtotal() {
imprime("O total calculado até agora é de ", total)
total = 0
}
Objeto | Características | Funcionalidades |
---|---|---|
Carro |
Cor: Azul, Ano Fabricação: 2012, Bancos: couro |
Acelerar, Frenar, Limpar parabrisas, Acender faróis |
TV |
Tamanho: 42", Tela: LCD, Classificação Energética: A |
Ligar/Desligar, Trocar canais, Acionar Timer, Exibir guia de programação |
💡
|
As características de um objeto são qualidades (adjetivos) e as funcionalidades são ações (verbos), assim é fácil distinguí-las. |
-
É possível criar programas para controlar objetos como carros, TVs, relógios, balanças, porteiros eletrônicos, lâmpadas, portas e muito mais
-
a POO aproxima a representação de tais objetos em um programa.
-
POO busca representar objetos reais ou abstratos na criação de programas.
-
Objeto real: pessoa ou veículo
-
Objeto abstrato: foto digital ou um objeto para envio de mensagens SMS.
-
Substantivos como "pessoa", "carro" ou "foto digital" são genéricos.
-
Nomes como "Manoel", "Fiat Uno" ou "foto do Manoel" são objetos concretos.
-
Em POO objetos são representados de uma forma geral usando modelos.
-
Um modelo para pessoas vai permitir representar pessoas de modo geral.
-
Permite representar o Manoel, a Maria, o João, etc.
-
Permite representar qualquer pessoa que preencha os requisitos.
❗
|
Um modelo em POO é utilizado para representar um objeto real ou abstrato, incluindo suas características, restrições e funcionalidades. |
-
As caracteristicas e funcionalidades de um objeto em POO vai depender do tipo de sistema onde tal objeto está sendo representado.
-
Um modelo em POO define quais características o objeto terá.
-
Exemplo da casa: cor, tamanho, quantidade de quartos e banheiros.
-
O modelo não define os valores para cada uma destas características.
-
O modelo só indica que a casa precisa de uma cor.
-
Um projeto de engenharia civil é diferente de um modelo padrão em POO.
-
É possível representar as restrições de um projeto de engenharia.
-
Um modelo (como pessoa) não define os valores de características.
-
POO permite representar os mais diversos objetos do mundo real para um programa.
-
Modelos que representam quais características, funcionalidades e restrições tais objetos terão.
-
A partir das classes é possível criar objetos concretos.
-
Classes podem ser identificadas a partir de substantivos.
Conhecemos os objetos como eles são no mundo real. Em POO, um objeto é um elemento criado a partir de uma classe. A classe é um modelo, um molde utilizado para criar objetos daquele tipo sempre que for desejado. A classe funciona então como uma fábrica de objetos. Cada objeto possui todas as características e funcionalidades definidas pela sua classe.
Vamos utilizar como exemplo uma aplicação para uma loja que precisa cadastrar seus clientes. A partir de uma classe Cliente, pode-se criar quantos objetos forem necessários. Desta forma, cada cliente da loja será representado por um objeto diferente. Apesar de todos os clientes terem as mesmas características definidas na classe, como nome, CPF, sexo e data de nascimento, os valores para cada uma dessas características pode ser diferente para cada cliente. Isto torna os clientes diferentes uns dos outros.
Nas figuras acima, temos à direta uma classe Pessoa que representa pessoas de uma forma genérica para um determinado software. No lado esquerdo temos o Manoel que representa uma pessoa específica.
-
Objetos só podem ser criados se existirem classes para serem utilizadas como modelos.
-
Java possui uma infinidade de classes para as mais diversas finalidades.
-
Ao criar um software, você precisará criar classes específicas.
-
Cada classe precisa de um nome. Adicionalmente pode ter características e/ou funcionalidades.
Como primeiro exemplo, considere que o proprietário de uma loja de móveis e eletrodomésticos lhe pede para desenvolver um sistema para controle de vendas. O proprietário precisa inicialmente de um sistema para cadastrar clientes, produtos, funcionários e filiais da loja. Assim, identifique quais classes são necessárias e pense nas características que cada uma deve ter.