Linguagens de Programação Orientadas a Objetos
description
Transcript of Linguagens de Programação Orientadas a Objetos
1 de 25
Linguagens de Programação Orientadas a Objetos
Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa
Marco [email protected]
Aula 01 - Conceitos da Orientação a Objetos
http://www.ufpa.br/sampaio/bd2003/lpoo
Marco Fagundes
2 de 25
Roteiro Apresentação Qualidade de Software Paradigmas de Programação Conceitos da Orientação a Objetos Programação Orientada a Objetos Java e Delphi
3 de 25
ApresentaçãoObjetivo Geral do Curso Motivar, apresentar e exercitar o uso de estilos de
programação orientados a objetos a fim de se obter software de qualidade
Objetivos Específicos do Curso Discutir aspectos de qualidade e modularidade de software Introduzir conceitos de POO Empregar conceitos OO em Java e Delphi Fornecer diretrizes para a construção e estruturação de
programas em Java e Delphi Utilizar ambientes de programação em Java e Delphi Desenvolver uma aplicação de médio porte
4 de 25
ApresentaçãoRelevância e Expectativas Estudar os conceitos de orientação a objetos e sua utilização
no desenvolvimento de sistemas de software Empregar na prática os conceitos OO Consolidar conceitos como abstração de dados,
modularidade e reusabilidade Capacitar o aluno no desenvolvimento de software de
qualidade No final do curso o aluno estará apto a participar na
implementação de sistemas orientados a objetos usando Java ou Delphi
5 de 25
ApresentaçãoRelação com outras Disciplinas
Análise e Projeto de Sistemas
LPOO
Banco de DadosProjeto/Construção do Banco de Dados
Modelo de Análse/Projeto
Sistema Implementado
em Java ou Delphi
6 de 25
ApresentaçãoEstrutura do Curso O curso é composto por aulas teóricas e práticas. A estratégia
adotada é que a cada duas aulas teóricas será efetuada uma aula prática no laboratórico
O curso é composto por três módulos:• Módulo Fundamentos (12 aulas)• Módulo Avançado (11 aulas)• Módulo Cliente/Servidor (17 aulas)
Módulo Fundamentos• Objetivo: Apresentar conceitos básicos e avançados da orientação
a objetos, os ambientes Java e Delphi e sua utilização no desenvolvimento de GUIs
• Meta: Desenvolver uma aplicação (Java ou Delphi) com uma GUI oferecendo as operações básicas de cadastro (incluir, excluir, alterar e consultar) utilizando uma estrutura de dados
7 de 25
ApresentaçãoEstrutura do Curso Módulo Avançado
• Objetivo: Apresentar conceitos técnicas para o reuso de código através da herança de classes e recursos para o desenvolvimento de aplicações robustas
• Meta: Estender a aplicação desenvolvida no módulo de fundamentos adicionando reuso de código e robustez
Módulo Técnicas Cliente/Servidor• Objetivo: Apresentar os recursos e tecnologias utilizados
na conexão da aplicação com Banco de Dados no Java (JDBC) e no Delphi (BDE)
• Meta: Estender a aplicação desenvolvida no módulo avançado adicionando persistência dos objeto em um Banco de dados
8 de 25
ApresentaçãoCronograma
9 de 25
ApresentaçãoCronograma
10 de 25
ApresentaçãoCronograma
11 de 25
ApresentaçãoMetodologia de Ensino A ênfase do curso é em conceitos e técnicas Java e Delphi serão utilizados como ferramenta prática de
apoio• Para ilustrar o paradigma OO• Construir Aplicações OO
Os conceitos estudados serão sedimentados através da implementação incremental de um projeto a ser realizado durante o curso
12 de 25
ApresentaçãoMetodologia de Trabalho O sistema a ser considerado para estudo no curso é um subconjunto
de um sistema de controle acadêmico desenvolvido na UFPE O escopo considerado envolve a funcionalidade de criação de turmas A idéia é fornecer um diagrama de classes UML a partir do qual será
gerada uma implementação
Especificar Docentes Ministrantes
Criar Turmas e SubturmasCoordenador Chefe de Departam ento
Especificar Atividade Acadêmica Turma
<<include>>
<<include>>
Docen teMinistrantecargaHoraria : I nteger
DocenteCandidatodataHabilitação : Date
PeriodoLetivocodigoPeriodoLetivo : I ntegeranoPeriodoLetivo : I ntegersemestrePeriodoLetivo : I ntegertipoPeriodoLetivo : StringdataI nicio : DatedataFim : Date
ComponenteCurricularcodigoComponenteCurricular : I nte gernomeCo mpone nteCurricular : StringformaAvaliaca o : StringcargaHorariaMinima Aproveitame nto : I ntegersituaca o : StringdataPropos ta : Da tedataI mplantacao : Date
DocentecpfDocente : StringcodigoDocente : I ntegernomeDocente : StringregimeDocente : StringtipoDocente : TipoDocente
1..n1..n(colecaoDocentesCandidatos)
HorarioPadraocodigoHorario : I ntegerdiaSemanaHorario : StringhoraI nicio : DatehoraFim : Date
AtividadeAcademicacodigoAtividadeAcademica : I ntegersituacaoAtividade : String
11 periodoOferecimento11componenteCorrespondente
TipoTurmacodigoTipoTurma : I nte gerdescricaoTipoTurma : String
TurnocodigoTurno : I ntegernomeTurno : StringhoraI nicio : DatehoraFim : DateduracaoHoraAula : I nteger
TurmacodigoTurma : I ntegernaturezaT urma : Booleanide ntificacao : Stringnume roAulas : I ntegercargaHora riaTurm a : I nte gersituacaoTurma : Stringqntde TotalVagas : Integer
1..n1..n
(colecaoDocentesMinistrantes)
1..n1..n(colecaoHorariosTurma)
11atividadeAcademicaMinistrada
11
tipoTurma
11turnoTurma
0..1
turmaSuperior
0..1
HorarioTurmacodigoHorarioTurma : I nteger
SalacodigoSala : I ntegerdescricaoSala : StringcapacidadeSala : I ntegertipoSala : TipoSalapredio : Predio
11sala
13 de 25
Metodologia de Trabalho A aplicação será desenvolvida incrementalmente a cada módulo
do curso A aplicação a ser desenvolvida será avaliada segundo emprego do
paradigma OO, estruturação, reusabilidade e robustez A meta é capacitar o aluno a desenvolver a aplicação segundo
estrutura abaixo
Apresentação
14 de 25
Avaliação 1 projeto em equipe (de até 3 pessoas) a ser entregue em dois
estágio.• No final do Módulo de Avançado (20% da média final)• No final do Módulo de Técnicas (35% da média final)
Três exames escritos explorando aspectos conceituais e de implementação das construções de Java e Delphi. Cada exame será realizado no final de cada módulo e valem 10% da média final
Três exercícios práticos/teóricos individuais/grupo. Cada exercício será efetuado na fase intermediária de cada módulo e terá o valor de 5% da média final
Apresentação
15 de 25
ApresentaçãoBibliografia(principais) Livros (Java):
Harvey M. Deitel and Paul J. Deitel. Java: Como Programar. Terceira edição, Bookman, 2000. (Livro texto do curso; exemplos do livro e referências adicionais em http://www.deitel.com/)
Bruce Eckel. Thinking in Java. Terceira Edição, 2002. (Disponível em HTML, no formato PDF, e em HTML de forma compactada)
Livro (Delphi): Marco Cantu. Dominando o Delphi 5 - A Bíblia. Makron, 2000.
Referências na Internet...
16 de 25
Qualidade de Software A Crise do Software (Problemas e Causas) Qualidade de software é um conjunto de propriedades a
serem satisfeitas em um determinado grau, de modo que o software satisfaça às necessidades de seus usuários
Atributos de qualidade: Corretude, Eficiência, Manutenibilidade Portabilidade, Reusabilidade, Robustez, Extensibilidade, Integridade e Usabilidade
Os fatores extensibilidade e reusabilidade estão diretamente relacionados à manutenção de sistemas. Estima-se que 70% do custo de software corresponde à manutenção
Clareza versus Eficiência Pensamento a longo prazo e desenvolvimento disciplinado,
ao invés de resultados imediatos e de qualquer jeito Software tem que ser adaptável, flexível, fácil de manter
(custos e tempo reduzidos de desenvolvimento e manutenção)
17 de 25
Paradigmas de Programação O que é Paradigma de Programação?
• Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns
Paradigma Imperativo• Programas centrados no conceito de um estado (modelado
por variáveis) e ações (comandos) que manipulam o estado• Paradigma também denominado de procedural, por incluir
subrotinas ou procedimentos como mecanismo de estruturação
• Primeiro paradigma a surgir e ainda é o dominante Paradigma Orientado a Objetos
• Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo
• A diferença é mais de metodologia quanto à concepção e modelagem do sistema
• A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este
18 de 25
Paradigmas de Programação Paradigma Funcional
• Programas são funções que descrevem uma relação explícita e precisa entre E/S
• Estilo declarativo: não há o conceito de estado nem comandos como atribuição
• Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda
• Aplicação: IA
Paradigma Lógico• Programas são relações entre E/S• Estilo declarativo, como no paradigma funcional• Na prática, inclui características imperativas, por questão de
eficiência• Aplicações: SGBD
19 de 25
Conceitos da Orientação a Objetos Administração da Complexidade
• Abstração (dados e procedimentos): Deter em elementos relevantes
• Encapsulamento: Separar aspectos externos dos detalhes internos• Modularidade: Módulos coesos e fracamente acoplados• Herança: Compartilhamento de propriedades e comportamento
Conceitos Básicos• Objetos: Elemento que desempenha um papel específico• Classes e Instâncias: Classe descreve um conjunto de objetos com
mesmos atributos/operações/relações/semântica• Mecanismos de Estruturação: Ligações e Associações / Composição
e Agregação / Herança• Métodos e Mensagens: Métodos implementam operações e
Mensagens são usadas para ativar métodos• Persistência: Transcender o tempo/espaço
20 de 25
Conceitos da Orientação a Objetos Conceitos Avançados
• Classes e Operações Abstratas: Classes abstratas organizam características comuns a diversas classes. Operações abstratas possuem múltiplas implementações
• Polimorfismo: Um objeto emissor de uma mensagem não precisa conhecer a classe do objeto receptor. As operações possuem a mesma assinatura e semântica
• Sobrecarga: As operações não têm necessariamente a mesma semântica e nem precisam conservar sua assinatura
• Ligação Dinâmica: A mensagem somente é associada ao método específico da classe do objeto receptor no momento em que é enviada
21 de 25
Conceitos da Orientação a Objetos Resumo
Administração de Complexidade
Abstração
Encapsulamento
Modularidade
Herança
Conceitos Básicos
Objetos
Mecanismos de Estruturação
Classe e Instâncias
Métodos e Mensagen
sPersistência
Conceitos Avançados
Classes e Operações Abstratas
Polimorfismo
Sobrecarga
Ligação Dinâmica
Para uma linguagem ser considerada OO, ela precisa implementar 4 conceitos:•Abstração•Encapsulamento •Herança•Polimorfismo.
22 de 25
Análise, Projeto e Programação OO Na Análise OO o objetivo é desenvolver um modelo OO do
domínio da aplicação. Os objetos identificados podem ou não podem ser mapeados diretamente em objetos do sistema
No Projeto OO o objetivo é desenvolver um modelo OO de um sistema de software para implementar os requisitos identificados. Estes requisitos podem ou não ser estruturados em objetos no domínio do problema
Na Programação OO o objetivo é realizar um projeto de software usando uma linguagem de programação OO. Uma linguagem de programação OO suporta diretamente a implementação de objetos e fornece classes e herança
23 de 25
Unified Modeling Language A UML é uma linguagem padrão para especificar, visualizar,
documentar e construir artefatos de um sistema e pode ser utilizada ao longo de todo o ciclo de desenvolvimento e através de diferente tecnologias de implementação
Será citada a utilização do diagrama de classes Uma classe UML apresenta a seguinte representação gráfica:
Nome da Classe (obrigatório)
Atributos da Classe (opcional)
Operações da Classe (opcional)
Implementação em Javapublic class Sala{ int codigoSala; public void consultarSalas(){...} }
Implementação em Delphitype TSala = class private codigoSala: integer; public procedure consultarSala;
24 de 25
Programação Orientada a Objetos A Programação Orientada a Objetos (Object-Oriented
Programing) foi concebida no início da década de 70 Estruturação do programa é baseada nos dados e não nas
funções As funções mudam com mais frequência do que os dados
Linguagens OO• A orientação a objetos pode ser praticada em uma
linguagem imperativa tal como C ou Pascal. Entretanto, as regras de escopo não prevenirão dos acessos impróprios a um objeto a partir de outro módulo, ficando sob a responsabilidade do programador
• Formalmente, para ser considerada uma linguagem OO, esta precisa implementar quatro conceitos importantes: abstração, encapsulamento, herança e polimorfismo