• Nenhum resultado encontrado

lpoo-aula2

N/A
N/A
Protected

Academic year: 2021

Share "lpoo-aula2"

Copied!
46
0
0

Texto

(1)

Linguagens de Programação

Orientada a Objetos

Apresentação da disciplina

Prof. Artur Oliveira Gomes

Sistemas de Informação - CPAN - UFMS

3 de março de 2014

(2)
(3)

Sequência de Passos x Modelos

I Programação como sequência de passos

I Paradigma tradicional onde um problema é

resolvido a partir de um início e fim bem definidos e eventualmente dividido em sub-rotinas;

I Programação utilizando-se de objetos

I O paradigma da orientação a objetos considera

que os dados a serem processados e os

mecanismos de processamento dos dados devem ser considerados em conjunto;

(4)

Motivação

A análise orientada a objetos baseia-se em conceitos

que começamos a aprender no jardim de infância:

objetos e atributos, classes e membros, o todo e suas

partes. Por que demorou tanto tempo para que

aplicássemos esses conceitos à análise e

desenvolvimento de sistemas de informação é uma coisa

que qualquer um pode adivinhar – talvez estivéssemos

ocupados demais "seguindo o fluxo"durante o apogeu

da análise estruturada para considerarmos alternativas –

Coad & Yourdon

(5)
(6)

Motivação

Código em C

int i , j , s o m a ; v o i d i n i t (int _i , int _j ) { s o m a = 0; i = _i ; j = _j ; } int s o m a I J () { s o m a += i * j ;} int ret () {r e t u r n s o m a ;} v o i d m a i n () { i n i t (3 ,2) ; s o m a I J () ; s o m a I () ; s o m a I J () ; }

Modelo em UML

Soma i : int j : int soma : int

init(int, int) : void somaIJ() : int ret() : int

(7)

História da Orientação a Objetos

I SIMULA - 1aLinguagem Orientada a Objetos;

I Década de 70 surge a linguagem SmallTalk

(considerada até hoje única linguagem puramente orientada a objetos);

I Década de 80 − > Rápida evolução − > Surgimento

de Ada e C++

(8)
(9)
(10)

Mais um pouco de história

I O uso da Tecnologia de Objetos como

metodologiabásica para desenvolvimento de sistemas (abrangendo todo o ciclo ... desde análise até o código) é uma prática que passou a ser difundida na década de 80 com a publicação dos trabalhos do pesquisador Grady Booch.

I A tecnologia de objetos veio para ficar!

I Seus conceitos e técnicas imprimem maior

qualidade,produtividade e profissionalismo na construção de software.

(11)

Orientação a objetos é necessária?

I Nem sempre...

I Há situações onde o modelo de uma tarefa a ser

executada é tão simples que a criação de uma classe para representá-lo torna o problema mais complicado;

I Uma equação de segundo grau, por exemplo.

I Fórmula de Bhaskara – x = −b±

√ b2−4ac 2a

(12)

Código estruturado em C

# i n c l u d e < s t d i o . h >

# i n c l u d e < m a t h . h >

d o u b l e b a s c a r a X 1 (int a , int b , int c )

{

d o u b l e d e l t a = ( b * b ) -4*( a ) *( c ) ;

r e t u r n - b + s q r t ( d e l t a ) /2* a ;

}

d o u b l e b a s c a r a X 2 (int a , int b , int c )

{

d o u b l e d e l t a = ( b * b ) -4*( a ) *( c ) ;

r e t u r n - b - s q r t ( d e l t a ) /2* a ;

}

int m a i n (int argc , c h a r ** a r g v ) { p r i n t f (" X1 ␣ = ␣ \% f ", b a s c a r a X 1 (3 , -7 ,2) ) ; p r i n t f (" X2 ␣ = ␣ \% f ", b a s c a r a X 2 (3 , -7 ,2) ) ; r e t u r n 0; }

Código OO em Java

p u b l i c c l a s s B h a s k a r a { p r i v a t e int a , b , c ;

B h a s k a r a (int a , int b , int c ) {

t h i s. a = a ; t h i s. b = b ; t h i s. c = c ; } p u b l i c d o u b l e b a s c a r a X 1 () { d o u b l e d e l t a = ( b * b ) -4 * a * c ; r e t u r n - b + M a t h . s q r t ( d e l t a ) /2* a ; } p u b l i c d o u b l e b a s c a r a X 2 () { d o u b l e d e l t a = ( b * b ) -4 * a * c ; r e t u r n - b - M a t h . s q r t ( d e l t a ) /2* a ; } p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s []) { B h a s k a r a b = new B h a s k a r a (3 , -7 ,2) ; S y s t e m . out . p r i n t l n ( b . b a s c a r a X 1 () ) ; S y s t e m . out . p r i n t l n ( b . b a s c a r a X 2 () ) ; } }

(13)

Motivação

Orientação a objetos é necessária?

I Em muitas situações

I Imagine uma aplicação “mundo real” repleta de

janelas queapresentam as mesmas funcionalidades e se compõem de uma infinidade de outros controles gráficos que se repetem ao longo da aplicação (botões, caixas de texto, janelas de diálogo, etc.);

(14)

Motivação

Orientação a objetos é necessária?

I Imagine simular o movimento de espermatozoides a

procura de umóvulo utilizando a programação

estruturada normal de forma que cada célula (dentre as milhões) tenha atributos diferentes (velocidade, tamanho, agilidade, etc.)

(15)

Motivação

Papéis dos programadores OO

I Programador de Classes

I Criam novas classes;

I Tarefa mais abstrata e específica (não há

preocupação cominterface, por exemplo);

I Preocupação com questões de segurança;

I Deve prever a utilização da classe para

diferentesaplicações;

I Programadores Usuários

I Utilizam as classes disponíveis, combinando seus

(16)

POO

(17)

Motivação

Núcleo mínimo de uma linguagem OO

I Segundo Grady Booch: Coming of Age in an Object-OrientedWorld. IEEE Software 11(6): 33-41 (1994).

I Uma linguagem orientada a objetos deve oferecer:

I Abstração I Encapsulamento I Herança I Polimorfismo

(18)
(19)

Abstração

(20)

Abstração

I Habilidade de se concentrar nos aspectos essenciais de

um contexto qualquer, ignorando características menos importantes ou acidentais;

I Na POO, uma classe é uma abstração de entidades

(21)

O que é uma classe

I A classe é a unidade básica de trabalho em um

programa orientado a objetos;

I Representa um modelo abstrato a partir do qual são

criadas instâncias;

I É uma coleção de dados (atributos) e operações

(22)

O que é uma classe (continuação)

I A classe é a descrição de um tipo de objeto;

I Objeto está para classe da mesma forma que variável

está para tipo de dado.

I Que objetos poderiam ser descritos com essa classe?

Classe Data em UML

Data dia : int

mes : int ano : int

dataPorExtenso(int, int) : String calculaData(int, int, int) : int diaSemana() : String

(23)
(24)

O que compõe uma classe?

I Atributos

I São os dados (simples ou compostos) quecaracterizam

objetos daquela classe;

I São armazenadas em variáveis;

I Constituem o estado do objeto.

I Operações

I São os métodos (procedimentos ou funções)

(25)

Exemplo de Atributos

Código em C

p u b l i c c l a s s C a c h o r r o { p r i v a t e S t r i n g cor ; p r i v a t e b o o l e a n s a b e E s c r e v e r ; p u b l i c C a c h o r r o ( S t r i n g c , b o o l e a n se ) { cor = c ; s a b e E s c r e v e r = se ; }p u b l i c v o i d c o r r e r () {} p u b l i c v o i d l a t i r () { S y s t e m . out . p r i n t l n (" Au , ␣ au ") ; } p u b l i c v o i d e s c r e v e r () { if ( s a b e E s c r e v e r ) { S y s t e m . out . p r i n t l n (" Ola ") ; }

Modelo em UML

Cachorro cor : String sabeEscrever : boolean correr() : void latir() : void

(26)
(27)
(28)

Encapsulamento

I Consiste na separação dos aspectos internos eexternos

de um objeto;

I É utilizado para impedir o acesso direto aoestado de

um objeto (seus atributos) disponibilizando apenas métodos para validar e efetivar suas alterações.

(29)

Encapsulamento

I Permite ignorar os detalhes de implementação (de

como as coisas funcionam internamente), podendo o desenvolvedor idealizar seu trabalho em um nível mais alto de abstração;

I É o termo formal que descreve a junção de métodos e

dados dentro de um objeto de maneira que acesso a estes dados só seja permitido por meio dos próprios métodos do objeto;

(30)

Exemplo: o telefone

I Ninguém precisa conhecer detalhes dos circuitos de um

telefone para utilizá-lo;

I Sua carcaça encapsula os detalhes e nos provê uma

interface amigável: botões, caixas de diálogo, sinais de tom, etc.

(31)

Exemplo: o colchão

I Ninguém está preocupadoem como o colchão foi

construído na hora de dormir;

I Basta ele oferecer umainterface amigável quetodos

(32)

Exemplo: um terminal bancário

I Se um banco reescrever osoftware (aperfeiçoando-o) ele

não precisa avisar todos os clientes ...

I A interface não mudou (oque mudou foram detalhes de

(33)
(34)

Herança (ou generalização)

I É o mecanismo pelo qual uma classe pode estender

outra aproveitando seus comportamentos (métodos) e estados possíveis (atributos);

I Permite que elementos mais específicos incorporem a

estrutura e o comportamento de elementos mais genéricos;

(35)

Herança (ou generalização)

I Quando um objeto da classe filho é criado ele herda

todas as propriedades da classe pai, além das propriedades definidas na própria classe filho;

I Animal: Mamífero, Réptil, Canino, Felino...

I O homem naturalmente pensa dessa forma:

(36)

É um tipo de ...

I Um objeto de uma subclasse (classe filha) éum tipo de

objeto da superclasse (classe pai);

I Um objeto “Poupança”, classe filha de “Conta”, por

exemplo, é um tipo de conta;

I Beagle É um tipo de Cachorro

(37)

Não é um tipo de ...

I Se um objeto de uma subclasse não possui todos os

atributos e operações da superclasse, ela (classe deste objeto) não pode ser uma subclasse

(38)
(39)
(40)

Polimorfismo

I Permite que uma mesma operação possa ser definida

para diferentes tipos de classes, e cada uma delas a implementa como quiser;

I Permite a um mesmo objeto se manifestar de diferentes

(41)

Polimorfismo (cont.)

I Princípio pelo qual duas ou mais classes derivadas de

uma mesma superclasse podem invocar métodos que têm a mesma assinatura (lista de argumentos e tipo de retorno) mas com comportamentos distintos

(especializados em cada subclasse).

I A decisão sobre qual método deve ser selecionado, de

acordo com o tipo da classe derivada, é tomada em tempo de execução.

(42)

Embarque em um veículo

I Barcos, trens e caminhões são veículos que possuem

operações de embarque;

I Em cada tipo de veículo a operação de embarque é

(43)
(44)

Portas lógicas

I Uma porta lógica é um CI que encapsula operações

simples entre um, dois ou mais sinais elétricos. São exemplos:

I Essa atividade consiste em testar as interfaces de dois

circuitos eletrônicos integrado (CI 4081 e CI 4071) indicando ao final da tarefa que tipo de porta lógica eles implementam. A interface dos CD é a seguinte:

(45)

Comanda de um restaurante

I Imagine que você tenha sido contratado para modelar e

informatizar a comanda de um restaurante;

I Que tipo de informações seriam pertinentes armazenar

sobre a comanda?

I Que tipo de operações a comanda deveria oferecer a

(46)

Pessoa

I Tente abstrair modelos de pessoas para diferentes

situações;

I Um funcionário de uma empresa;

I Um paciente de um hospital;

Referências

Documentos relacionados

Atributos: podem ser acessados por objetos de classes dentro do mesmo pacote ou de qualquer subclasse da classe ao qual ele pertence. Métodos: podem ser chamados por objetos de

Devido ao alto nível de degradação das lagoas e possibilidade de esgotamento da jazida a Prefeitura Municipal de Teresina através do Programa Lagoas do Norte -

8.9.3.5.3 As notas para pontuações acima da metade da pontuação de referência, quando a pontuação de referência é ultrapassada, serão distribuídas linearmente

O departamento é obrigado, segundo a Section 494D of the Migration Act 1958 (Seção 494D da Lei da Migração de 1958) (a Lei), a enviar ao seu recipiente autorizado

Use este formulário, caso se encontre fora da Austrália, para apresentar o requerimento de um visto (visa) para visitar a Austrália para turismo ou outras atividades

Use este formulário, caso se encontre fora da Austrália, para apresentar o requerimento de um visto (visa) para visitar a Austrália para turismo ou outras atividades

Use este formulário, caso se encontre fora da Austrália, para apresentar o requerimento de um visto (visa) para visitar a Austrália para turismo ou outras atividades

– Tipo de dados que o objeto armazena, ou seja, os estados possíveis que ele pode assumir (atributos) – Tipos de operações que podem ser executadas pelo. objeto, ou seja, o