Programação Orientada a Objetos (DPADF 0063)

Documentos relacionados
Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Java para Desktop. Programação Orientada à Objetos 2 JSE

1 Introdução e Conceitos básicos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Desenvolvimento Web TCC Turma A-1

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagem de Programação III

Conceitos de Programação Orientada a Objetos

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

Aula II Orientação a Objetos. Pedro Baesse Alves Pereira

Programação Java (nível intermediário) 4. Polimorfismo

Os princípios do desenho orientado a objetos

No final deste curso, saberás criar programas através da linguagem de programação Java.

Linguagem de Programação III

Introdução à orientação a objetos

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Polimorfismo. O que é polimorfismo?

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

LÓGICA DE PROGRAMAÇÃO (JAVA) POLIMORFISMO. Professor Carlos Muniz

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Linguagem de Programação IV Introdução

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

O PARADIGMA ORIENTADO POR OBJETOS

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Programação Orientada a Objetos

Classe Abstrata e Interface

Introdução a Programação Orientada a Objetos

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

Linguagem de programação Programação Orientada a objetos

Linguagem de Programação II Implementação

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Programação Orientada a Objetos

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Interfaces e Classes Abstratas

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Orientação a Objetos e Java

Introdução à Programação. Encapsulamento e Herança

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Introdução ao Java. Prof. Herbert Rausch Fernandes

POO29004 Programação Orientada a Objetos

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Instituto Federal de Educação, Ciência e Tecnologia do Ceará IFCE Programa Educacional Brasileiro de Desenvolvimento para ios BEPiD PROVA OBJETIVA

Palavras Reservadas da Linguagem Java

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Programação Orientada a Objetos (DPADF 0063)

9 Classes Abstractas e Interfaces

extendsé usado para indicar herança em JAVA

Tipos Abstratos de Dados

Laboratório de programação II

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Unidade: Introdução à POO (Programação Orientada a Objetos)

Interfaces POO. Prof. Marcio Delamaro

Orientação a Objetos Básica

Linguagem de Programação I

Relacionamentos entre objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Classes e Objetos. Sintaxe de classe em Java

Linguagem de Programação I Apresentação da Disciplina

Linguagem de Programação III

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Transcrição:

Programação Orientada a Objetos (DPADF 0063) Aula 1 Motivação e Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Objetivos Capacitar o aluno a implementar algoritmos para a solução de problemas computacionais em uma linguagem de programação orientada a objetos.

Programa Unidade 1 Orientação a Objetos (OO) Conceitos de OO: abstração, classes, objetos, encapsulamento, herança e polimorfismo. Introdução à programação OO. Unidade 2 Implementação em Java Fundamentos da linguagem Java. Implementação de classes em Java. Interação entre objetos. Reaproveitamento de código. Manipulação de coleções de objetos. Desenvolvimento de interfaces gráficas através da API Swing. Tratamento de exceções. Conexão com bancos de dados através da API JDBC. Applets. Threads.

Material de Aula Livro Texto: Santos, R., Introdução à Programação Oriendada a Objetos Usando Java. Rio de Janeiro: Campus, 2003. Página da Disciplina: www.cafw.ufsm.br/~bruno/disciplinas/poo Recomenda-se a utilização de um caderno e um pen-drive

Avaliação (individual) Avaliação 1 (50% do semestre) Sistematização 1 (Peso 3) Trabalho 1 (Peso 2) Avaliação 2 (50% do semestre) Sistematização 2 (Peso 3) Trabalho 2 (Peso 2)

Programação Orientada a Objetos (DPADF 0063) Aula 1 Motivação e Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Programação Orientada a Objetos

Sequência de Passos x Modelos Programação como sequência de passos Paradigma tradicional onde um problema é resolvido a partir de um início e fim bem definidos e eventualmente dividido em sub-rotinas; Programação utilizando-se de objetos 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;

A análise Orientada a Objetos baseia-se em conceitos que começamos a aprender no jardim da 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

Sequência de Passos x Objetos Sequência de passos Objetos Início Área de Variáveis ContaBancariaSimples - String nomedocorrentista; - float saldo; - char indccontaespecial; + abreconta(nome, depósito, indespecial) + abrecontasimples(nome) + deposita(valor) + retira(valor) + mostradados() + alteranometitular(novonome) Área de Atributos Área de Operações Fim Aplicação Conta1 Conta2 Conta3

Um pouco de história sobre POO 1967 Anos 70 Anos 80 Anos 90 SIMULA - 1ª Linguagem Orientada a Objetos; Década de 70 surge a linguagem SmallTalk (considerada até hoje única linguagem puramente orientada a objetos); Década de 80... Rápida evolução... Surgimento de Ada e C++ Década de 90... Java

Mais um pouco de história... O uso da Tecnologia de Objetos como metodologia bá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. A tecnologia de objetos veio para ficar! Seus conceitos e técnicas imprimem maior qualidade, produtividade e profissionalismo na construção de software.

Orientação a objetos é necessária? Nem sempre... 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... Uma equação de segundo grau, por exemplo... Fórmula de Bhaskara

Bhaskara... Estruturado x OO #include <stdio.h> #include <math.h> public class Bhaskara { private int a, b, c; double bascarax1(int a, int b, int c) { double delta = (b*b)-4*(a)*(c); return -b + sqrt(delta) / 2*a; } double bascarax2(int a, int b, int c) { double delta = (b*b)-4*(a)*(c); return -b - sqrt(delta) / 2*a; } int main(int argc, char** argv) { int a, b, c; printf("digite a, b e c... \n"); scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); Bhaskara(int a, int b, int c) { this.a = a; this.b = b; this.c = c; } public double solvex1() { double delta = (b*b)-4*(a)*(c); return -b + Math.sqrt(delta) / 2*a; } public double solvex2() { double delta = (b*b)-4*(a)*(c); return -b - Math.sqrt(delta) / 2*a; } public static void main (String args[]) { } printf( X1 = %f", bascarax1(a, b, c)); printf( X2 = %f", bascarax2(a, b, c)); return 0; Código estruturado em C } } Bhaskara bascara = new Bhaskara(3,-7,2); System.out.println(bascara.solveX1()); System.out.println(bascara.solveX2()); Código orientado a objetos em Java

Orientação a objetos é necessária? Em muitas situações... Imagine uma aplicação mundo real repleta de janelas que apresentam 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...); 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...)

Papéis dos programadores OO Programador de Classes Criam novas classes; Tarefa mais abstrata e específica (não há preocupação com interface, por exemplo); Preocupação com questões de segurança; Deve prever a utilização da classe para diferentes aplicações; Programadores Usuários Utilizam as classes disponíveis, combinando seus objetos e criando aplicações;

Conceitos Fundamentais

Núcleo mínimo de uma linguagem OO Segundo... Grady Booch: Coming of Age in an Object-Oriented World. IEEE Software 11(6): 33-41 (1994). Uma linguagem orientada a objetos deve oferecer: Abstração Encapsulamento Herança Polimorfismo

Classes x Objetos

Abstração Habilidade de se concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais; Na POO, uma classe é uma abstração de entidades existentes no domínio do sistema de software;

O que é uma classe A classe é a unidade básica de trabalho em um programa orientado a objetos; Representa um modelo abstrato a partir do qual são criadas instâncias; É uma coleção de dados (atributos) e operações (métodos) que manipulam tais dados

O que é uma classe (continuação) A classe é a descrição de um tipo de objeto; Objeto está para classe da mesma forma que variável está para tipo de dado. - dia : int; - mês : int; - ano : int Data Revolução Farroupilha dia = 20; mês = 9; ano = 1835; Independência do Brasil dia = 7; mês = 9; ano = 1822; + porextenso() : String; + diadasemana() : String; Classe Data Objetos da Classe Data Fundação da UFSM dia = 14; mês = 12; ano = 1960;

O que compõe uma classe Atributos São os dados (simples ou compostos) que caracterizam objetos daquela classe; São armazenadas em variáveis; Constituem o estado do objeto. Operações São os métodos (procedimentos ou funções) que manipulam os dados;

Exemplo de classe... public class Cachorro { private String cor; private boolean sabeescrever; Atributos Métodos } public Cachorro(String c, boolean se) { cor = c; sabeescrever = se; } public void correr() {} public void latir() { System.out.println("Au, au"); } public void escrever() { if (sabeescrever) { System.out.println("Ola"); } } Cachorro - cor : string - sabeescrever : boolean; + correr() : void; + latir() : void; + escrever() : void;

Ocultação de informações

Encapsulamento Consiste na separação dos aspectos internos e externos de um objeto; É utilizado para impedir o acesso direto ao estado de um objeto (seus atributos)... disponibilizando apenas métodos para validar e efetivar suas alterações.

Encapsulamento (cont.) Permite ignorar os detalhes de implementação (de como as coisas funcionam internamente) permitindo ao desenvolvedor idealizar seu trabalho em um nível mais alto de abstração; É 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;

O telefone... Ninguém precisa conhecer detalhes dos circuitos de um telefone para utilizá-lo; Sua carcaça empasula os detalhes e nos provê uma interface amigável... botões, monofone, sinais de tom...

O colchão... Ninguém está preocupado em como o colchão foi construído na hora de dormir; Basta ele oferecer uma interface amigável que todos saberão o que fazer com ele.

Um terminal bancário... Se um banco reescrever o software (aperfeiçoando-o) ele não precisa avisar todos os clientes... A interface não mudou (o que mudou foram detalhes de implementação...)

Conceitos Fundamentais

Herança (ou generalização) É o mecanismo pelo qual uma classe pode estender outra aproveitando seus comportamentos (métodos) e estados possíveis (atributos); Permite que elementos mais específicos incorporem a estrutura e o comportamento de elementos mais genéricos;

Herança (ou generalização) 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; Canino Mamífero Animal Felino... Réptil... O homem naturalmente pensa dessa forma... Doméstico Selvagem... Perdigueiro Poodle

É um tipo de... Um objeto de uma subclasse (classe filha) é um tipo de objeto da superclasse (classe pai); Um objeto Poupança, classe filha de Conta, por exemplo... É um tipo de conta; Beagle É um tipo de Cachorro Lancha É um tipo de veículo

Não é um tipo de... Se um objeto de uma subclasse não possui todos os atributos e operações da superclasse, ela (classe deste objeto) naõ pode ser uma subclasse Gato não é coelho!

Várias formas

Polimorfismo Permite que uma mesma operação possa ser definida para diferentes tipos de classes, e cada uma delas a implementa como quiser; Permite a um mesmo objeto se manifestar de diferentes formas;

Polimorfismo (cont.) 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). A decisão sobre qual método deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução.

Embarque em um veículo Barcos, trens e caminhões são veículos que possuem operações de embarque... Em cada tipo de veículo a operação de embarque é diferenciada...

Exercícios para fixação

Portas lógicas Uma porta lógica é um CI que encapsula operações simples entre um, dois ou mais sinais elétricos. São exemplos: 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:

Comanda de um restaurante Imagine que você tenha sido contratado para modelar e informatizar a comanda de um restaurante; Que tipo de informações seriam pertinentes armazenar sobre a comanda? Que tipo de operações a comanda deveria oferecer a seus utilizadores?

Pessoa Tente abstrair modelos de pessoas para diferentes situações... Um funcionário de uma empresa; Um paciente de um hospital; Um aluno de uma universidade;