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
1 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
2 de 25
Apresentação
Objetivo 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
3 de 25
Apresentação
Relevâ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
4 de 25
Apresentação
Relação com outras Disciplinas
Análise e Projeto
de Sistemas
Modelo de Análse/Projeto
LPOO
Sistema
Implementado em
Java ou Delphi
Banco de Dados
Projeto/Construção
do Banco de Dados
5 de 25
Apresentação
Estrutura 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
6 de 25
Apresentação
Estrutura 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
7 de 25
Apresentação
Cronograma
8 de 25
Apresentação
Cronograma
9 de 25
Apresentação
Cronograma
10 de 25
Apresentação
Metodologia 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
11 de 25
Apresentação
Metodologia 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
Com pone nte Curricular
Doce nte
cpfDoce nte : String
codigoDoce nte : Inte ge r
nom e Doce nte : String
re gim e Doce nte : String
tipoDoce nte : TipoDoce nte
(colecaoDocentesCandidatos)
Especificar Atividade Acadêmica
Turma
1..n
Docent e Candi dato
dataHabilitação : Date
codi goCom pone nt e Curricular : I nte ge r
nome Co mpone nte Curri cul ar : String
formaAv ali aca o : St ri ng
cargaHorariaMini ma Aprov e it ame nto : Inte ge r
sit uaca o : St ri ng
dataPropos ta : Da te
dataI mpl ant acao : Date
Pe riodoLe tivo
componenteCorrespondente
(colecaoDocentesMinistrantes)
<<include>>
Coordenador
Criar Turmas e Subturmas
periodoOferecimento
1
codigoAtividade Acade m ica : Inte ge r
situacaoAtividade : String
atividadeAcademicaMinistrada
Chefe de Departam ento
1..n
<<i nclude>>
1
turnoTurma
Turm a
HorarioPadrao
codigoHorario : Inte ge r
diaSe m anaHorario : String
horaInicio : Date
horaFim : Date
Especificar Docentes Ministrantes
1
Atividade Acade m ica
Docen te Ministrante
cargaHoraria : Inte ge r
(colecaoHorariosTurma)
HorarioTurm a
codigoHorarioTurm a : Inte ge r
1
sala
Sala
codigoSala : Inte ge r
de scricaoSala : String
capacidade Sala : Inte ge r
tipoSala : TipoSala
pre dio : Pre dio
codigoPe riodoLe tivo : Inte ge r
anoPe riodoLe tivo : Inte ge r
se m e stre Pe riodoLe tivo : Inte ge r
tipoPe riodoLe tivo : String
dataInicio : Date
dataFim : Date
Turno
codigoTurno : Inte ge r
nom e Turno : String
horaInicio : Date
horaFim : Date
duracaoHoraAula : Inte ge r
1
codi goTurma : Int e ge r
nature zaT urm a : Bool ean
0..1
1..n ide ntifi cacao : St ri ng
nume roAul as : Inte ge r
cargaHora riaTurm a : I nte ge r
situacaoTurm a : String
qntde Total Vagas : Int e ger
1
turmaSuperior
tipoTurm a
TipoTurm a
codi goTi poTurm a : Inte ge r
d e scricaoTi poTurma : String
12 de 25
Apresentação
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
13 de 25
Apresentação
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
14 de 25
Apresentação
Bibliografia(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...
15 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)
16 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
17 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
18 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
19 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
20 de 25
Conceitos da Orientação a Objetos

Resumo
Conceitos Básicos
Administração de
Complexidade
Abstração
Encapsulamento
Modularidade
Herança
Objetos
Mecanismos de
Estruturação
Persistênci
a
Classe e
Instâncias
Métodos e
Mensagen
s
Conceitos Avançados
Classes e
Operações
Abstratas
Ligação
Dinâmica
Polimorfism
o
Sobrecarg
a
Para uma linguagem ser considerada OO,
ela precisa implementar 4 conceitos:
•Abstração
•Encapsulamento
•Herança
•Polimorfismo.
21 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
22 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:
Implementação em Java
public class Sala{
int codigoSala;
Nome da Classe (obrigatório)
public void consultarSalas(){...}
}
Atributos da Classe (opcional)
Implementação em Delphi
Operações da Classe (opcional)
type
TSala = class
private
codigoSala: integer;
public
procedure consultarSala;
23 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
24 de 25
Download

Aula 01