Programao Soluçes Computacionais
Programao Soluçes Computacionais
http://lattes.cnpq.br/7137425845019062
https://www.linkedin.com/in/alexandre-oliveira-montanha/
alexmontanha@hotmail.com
E2A DIGITAL
PROGRAMAÇÃO DE SOLUÇÕES
C O M P U TA C I O N A I S
TA L K
30set | sábado | 9 - 11h50
E2A DIGITAL
Orientações sobre o momento dos encontros síncronos
COMPUTAÇÃO ANÁLISE
Algoritmos que testem as Esse algoritmo é eficiente?
premissas no horário
gerado
PROCESSO
DIVIDIR Dividir o problema em
pedaços menores para
avaliar melhor
TEXTUAL Descrever textualmente os
passos
Descrição do Projeto:
Cadastro de Autopeças:
Deve ser possível cadastrar autopeças com os seguintes atributos: código, O sistema deve gerar relatórios com as seguintes informações:
nome, descrição, preço unitário e quantidade em estoque. Lista de todas as autopeças com seus detalhes.
As autopeças devem ser armazenadas em uma coleção (por exemplo, um Lista das autopeças com estoque baixo (por exemplo, menos de 10 unidades).
ArrayList). Valor total do estoque (soma do preço unitário * quantidade em estoque de todas as
Consulta de Autopeças: autopeças).
Persistência de Dados:
Deve ser possível listar todas as autopeças cadastradas.
Deve ser possível buscar uma autopeça por código. As informações das autopeças devem ser salvas em um arquivo de texto chamado "estoque.txt".
Atualização de Estoque: Toda vez que o programa for aberto, ele deve carregar as informações do arquivo para
preencher o estoque.
Deve ser possível adicionar ou remover unidades de uma autopeça do estoque. Requisitos Técnicos:
O sistema deve atualizar automaticamente a quantidade em estoque após cada
operação. Use classes e objetos para representar as autopeças.
Venda de Autopeças: Utilize exceções para lidar com erros, como estoque negativo ou arquivo ausente.
Implemente um menu de console para interagir com o usuário.
Deve ser possível registrar uma venda de autopeças. Utilize estruturas de controle, como loops e condicionais, para criar uma experiência de usuário
O sistema deve reduzir a quantidade em estoque das autopeças vendidas. fluida.
Relatórios: Organize seu código em classes e métodos para manter a modularidade e a legibilidade.
Utilize o Java 8 ou superior para aproveitar as funcionalidades mais recentes da linguagem.
Entrega:
Você pode criar um repositório no GitHub ou em outra plataforma de controle de versão para armazenar seu código-fonte. Certifique-se de incluir um diagrama de classes, um arquivo
README.md com instruções de execução e exemplos de uso, e o arquivo "estoque.txt" contendo dados de exemplo.
Lembre-se de testar bem o seu sistema e lidar com possíveis exceções para garantir que ele seja robusto e confiável.
Este projeto permitirá aos alunos praticar conceitos de orientação a objetos, manipulação de arquivos, interface de console e lógica de programação em Java.
Paradigmas de Linguagens de Programação
Paradigma Orientado a Objetos
A orientação a objetos é uma abordagem de desenvolvimento de software que
(por serem mais pesados), porém a melhor estruturação do código é um benefício que
objetos do mundo real de uma maneira mais fidedigna. Ou seja, aproximar o mundo
Dados
Dados
Dados
Proc
Proc
Proc1 Proc2 Proc3
Dados
Dados
Proc
Importância e Motivação
Objeto
•Qualquer coisa existente no mundo real, em formato concreto ou abstrato (que exista física ou conceitualmente)
•Ex: aluno, mesa, professor, cadeira, caneta, conta bancária, tela, botão em uma tela etc.
•Estrutura computacional que representa um objeto do mundo real
Classe
•Quando identificamos características e operações similares em objetos distintos, estamos realizando sua classificação, ou seja, identificando classes!
•É uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica.
Conceitos Básicos
Uma classe descreve uma categoria genérica, já um objeto, ou instância de uma classe, refere-se à
estrutura de dados que representa um membro específico da categoria.
Ou Seja...
Atributos
•São dados ou campos privados.
•Representam as características que os objetos da classe possuem.
•Cada instância tem seus próprios valores de atributos, mas compartilha o nome e os comportamentos dos atributos com as outras
instâncias da classe.
•Os valores dos atributos nos ajudam a distinguir os objetos entre si.
Métodos
•Funções/procedimentos ou operações, comumente públicos.
•Representam o comportamento que os objetos da classe possuem.
•Modificam o estado de um objeto ou prestam serviços a outros objetos.
Classe Tipo
Herança -
Polimorfismo -
Em um contexto de automação bancária podemos identificar algumas classes:
•Cliente
•Agência
•Conta
•Conta Corrente
•Conta Poupança
Exemplo de Classes
A classe Conta Corrente pode conter os seguintes membros:
•Atributos
número
agência
saldo
•Métodos
depositar
sacar
consultar saldo
minhaConta.inicializarContaCorrente(123, 7);
minhaConta.depositar(50);
minhaConta.depositar(70);
System.out.println("Saldo:" + minhaConta.consultarSaldo());
}
}
ContaCorrente minhaConta;
minhaConta = new ContaCorrente();
A linha 1 cria uma área de memória que é uma referência para um objeto da classe ContaCorrente
A linha 2 cria um objeto da classe ContaCorrente e o atribui a minhaConta
Mensagens
O simples fato de programar em Java não significa que a aplicação seja orientada a objetos.
É muito importante entender a filosofia deste paradigma de programação para poder obter os seus benefícios.
Programar em OO
import java.util.Scanner;
E agora?
É usado para inicializar os valores dos atributos (valores default).
Deve ter o mesmo nome da classe que o contém e não possui retorno.
Pode ter parâmetros.
Toda subclasse deve chamar um dos construtores da superclasse direta ou indiretamente para inicializar os valores da classe
para o objeto da subclasse.
A subclasse pode chamar implicitamente o construtor da superclasse.
A subclasse pode chamar explicitamente o construtor da superclasse através do operador Super.
Método Construtor
Observe que no trecho de código abaixo o método construtor é público (sempre deve ser), ele não possui retorno
public Retangulo(){
altura = 1; largura = 1;
}
...
Programação em OO não foi pensada para se escrever menos.
Embora o programa se pareça maior e mais complexo, ele representa um retângulo de uma forma mais limpa e
À medida que esse código se tornar mais complexo, quem for usar essa classe não vai precisar conhecer detalhes e
Programar de Forma OO
Um método é uma função definida na classe que é invocada pelo objeto;
O operador de membro “.” (ponto) acessa um método ou atributo do objeto;
Construtores são invocados sempre que o objeto é alocado com new;
O operador this se refere ao objeto atual. Por exemplo, se uma variável de parâmetro tiver o mesmo nome do atributo você
pode identifica-los da seguinte maneira:
Alguns Detalhes...
Os modificadores de acesso permitem controlar a visibilidade de
atributos e métodos (além da própria classe):
•public: todos os métodos e atributos são visíveis dentro da classe em que
são definidos. Porém, ao torna-los públicos é possível fazê-los visíveis para
todas as classes externas a classe a que pertencem.
•private: é o tipo de acesso mais restritivo. Membros de classe que são
declarados com o acesso privado somente podem ser utilizados pela
classe em que foram definidos.
•protected: o membro de classe protegido é acessível a classes no mesmo
pacote, acessível e herdado por subclasses no mesmo pacote, e pode ser
herdado por subclasses declaradas em outros pacotes.
Alguns Detalhes...
1)Na classe Retangulo, implemente o método exibe(), que deve retornar as informações do retângulo:
Altura: altura
Largura: largura
Área: área
Perímetro: perímetro.
Exercícios
2)Implemente o método exibe() na classe ContaCorrente que imprima na tela os dados da conta:
Agência: agencia
Conta: conta
Saldo: R$ saldo.
•Para testar a implementação dessa classe, solicite inicialmente ao usuário que informe o número e agência da conta.
•Em seguida, solicite um valor para depósito e logo após, um valor para saque.
•Por último, imprima os dados da conta utilizando o método exibe() implementado.
•Altere o método sacar(), de modo que não seja possível sacar um valor maior que o saldo da conta. Emita uma mensagem caso o valor do saque seja inválido.
Exercícios
3)Crie uma classe Funcionario que possua os seguintes atributos: nome, idade, cargo, salário e endereço. Crie os
métodos gets e sets para os atributos, bem como uma classe principal que teste a classe. Crie um método exibe() para
imprimir na tela todas as informações de um funcionário.
Exercícios
Como identificar classes ? Meio de transporte aéreo. Classe:
“Veiculo de Transporte Aéreo”
• As classes abstratas se diferem das interfaces basicamente em dois quesitos: as interfaces não permitem a
declaração de atributos e também não permitem que os métodos nela contidos sejam implementados.
Como identificar a hierarquia?
Veiculo
Motocicleta Automóvel
• Partimos do pressuposto que de um modo geral todos eles são veículos. Ou seja,
possuem características em comum, possibilitando assim a criação de uma classe
base, ou superclasse, chamada “Veiculo” (generalização). Os demais veículos são
derivados deste e assim temos veículos terrestres, marítimos e aéreos.
• Podemos continuar com a nossa abstração se quisermos e assim tratarmos um
veículo terrestre com sendo um automóvel ou uma motocicleta (especialização).
Exemplo 2
Implementação de Herança: SuperClasse “Veiculo”
Classe Abstrata
Interface
Função Virtual
Polimorfismo
Exercícios
Obrigado!