Linguagens de Programação Orientadas a Objetos

24
1 de 25 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 01 - Conceitos da Orientação a Objetos http://www.ufpa.br/sampaio/bd2003/lpoo Marco Fagundes

description

Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 01 - Conceitos da Orientação a Objetos http://www.ufpa.br/sampaio/bd2003/lpoo.  Marco Fagundes. Roteiro. Apresentação Qualidade de Software - PowerPoint PPT Presentation

Transcript of Linguagens de Programação Orientadas a Objetos

Page 1: 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

Page 2: Linguagens de Programação Orientadas a Objetos

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

Page 3: Linguagens de Programação Orientadas a Objetos

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

Page 4: Linguagens de Programação Orientadas a Objetos

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

Page 5: Linguagens de Programação Orientadas a Objetos

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

Page 6: Linguagens de Programação Orientadas a Objetos

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

Page 7: Linguagens de Programação Orientadas a Objetos

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

Page 8: Linguagens de Programação Orientadas a Objetos

8 de 25

ApresentaçãoCronograma

Page 9: Linguagens de Programação Orientadas a Objetos

9 de 25

ApresentaçãoCronograma

Page 10: Linguagens de Programação Orientadas a Objetos

10 de 25

ApresentaçãoCronograma

Page 11: Linguagens de Programação Orientadas a Objetos

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

Page 12: Linguagens de Programação Orientadas a Objetos

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

Page 13: Linguagens de Programação Orientadas a Objetos

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

Page 14: Linguagens de Programação Orientadas a Objetos

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

Page 15: Linguagens de Programação Orientadas a Objetos

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...

Page 16: Linguagens de Programação Orientadas a Objetos

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)

Page 17: Linguagens de Programação Orientadas a Objetos

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

Page 18: Linguagens de Programação Orientadas a Objetos

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

Page 19: Linguagens de Programação Orientadas a Objetos

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

Page 20: Linguagens de Programação Orientadas a Objetos

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

Page 21: Linguagens de Programação Orientadas a Objetos

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.

Page 22: Linguagens de Programação Orientadas a Objetos

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

Page 23: Linguagens de Programação Orientadas a Objetos

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;

Page 24: Linguagens de Programação Orientadas a Objetos

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