Introdução ao paradigma da orientação a objetos

Documentos relacionados
Introdução ao Ambiente Java

Programação Orientada a Objetos

Programação Orientada a Objetos

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

POO29004 Programação Orientada a Objetos

1 Introdução e Conceitos básicos

POO29004 Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

Unidade 3: Classes em Java Para Programadores C Classes, Objetos e Tratamento de Erros Prof. Daniel Caetano

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

POO29004 Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27

Programação Orientada a Objetos

Programação Orientada a Objetos

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

A programação orientada a objetos tenta simular estes aspectos, trazendo para o computador a realidade do dia-a-dia.

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

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

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

Daniel Wildt

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

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

Orientação a Objetos e UML

Programação Orientada a Objetos

A figura abaixo representa uma classe denominada Carteira. Esta classe é composta dos métodos depositar(valor) e retirar(valor) e do atributo saldo.

Linguagem de Programação I


Programação Orientada a Objetos

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Conceitos Básicos. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP

Requisitos de sistemas

Princípios de Análise e Projeto Orientados a Objetos com UML

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

Tópicos da Aula. Conceitos de programação orientada a objetos. Projeto orientado a objetos com UML

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

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

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Orientação a Objetos Básica

Aula 04 Introdução à Programação Orientada à Objetos

Programação Orientada a Objetos

Modelo do Mundo Real. Abstração. Interpretação

BCC202 - Estrutura de Dados I

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

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

Desenvolvimento Web TCC Turma A-1

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

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

Linguagem de Programação I

Fundamentos de Programação

Introdução à Orientação a Objetos

Introdução à Programação Orientada a Objetos. Programação Estruturada vs Programação Orientada a Objetos

Engenharia de Software Projeto de software

Linguagem de Programação III

Laboratório de programação II

Televisao tamanho tela emitirsom. conectarperifericos

Programação Orientada a Objetos

Levantamento, Análise e Gestão Requisitos. Aula 03

Introdução a orientação a objetos

ORIENTAÇÃO A OBJETOS Histórico:

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

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

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

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

Programação Orientada a Objeto

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

Linguagem de Programação II Implementação

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Interfaces e Classes Abstratas

Unidade 9: Noções de Orientação a Objetos Prof. Daniel Caetano

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS - ORIENTAÇÃO A OBJETOS

Introdução à Orientação a Objetos em Java

Programação Orientada a Objetos

Programação de Computadores II TCC Turma A-1

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Implementando um Projeto. Programação em Java. Do Projeto para Implementação. Classe Pública em Java. Corpo de Classes e Métodos. Convenção de Nomes

Linguagem de Programação IV Introdução

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Algoritmos e Programação II

Orientação a Objetos. Vanessa Braganholo

Desenvolvimento de Aplicações Desktop

Linguagem de Programação. Diagrama de classes

Capítulo 2. Orientação a Objetos

Informática. Professor: Diego Oliveira. Conteúdo 04: Orientação a Objetos

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

Conceitos de Programação Orientada a Objetos

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

TIMTec. Introdução à programação em linguagem JAVA

Desenvolvimento Web. Conteúdo Orientação a Objetos. Prof.: Ilaim Costa Junior. Inspirados nos slides do prof. Leandro A. F.

PROGRAMAÇÃO ORIENTADA A OBJETOS II -MÉTODOS PARA MODELAGEM OO. Prof. Angelo Augusto Frozza, M.Sc.

PDS Aula 1.2 Introdução a Java, POO e Composição. Prof. Bruno Moreno

CLASSES, OBJETOS, MÉTODOS E STRING

Transcrição:

Introdução ao paradigma da orientação a objetos POO29004 Engenharia de Telecomunicações Prof. Emerson Ribeiro de Mello http://docente.ifsc.edu.br/mello/poo 21 DE AGOSTO DE 2018

Desenvolvimento de software Abstração do problema Princípio básico do desenvolvimento de software Retirar do domínio do problema detalhes relevantes e representá-los na linguagem da solução A evolução das linguagens de programação influenciaram a forma de como os problemas são atacados A tecnologia de cada época delimitou como os problemas eram atacados Paradigma forma de como atacar um problema 1/24

Paradigmas de programação: sequencial Solução rápida para problemas de pequeno porte Faz uso de desvios incondicionais (GOTO e JUMP) Não é ideal para problemas de grande porte Dificuldade em organizar o código O uso de desvios incondicionais pode-se tornar um transtorno Exemplos: Assembly, Basic 2/24

Paradigmas de programação: procedural/estruturada Fundamentada sobre estruturas de sequência, decisão e repetição Desvios condicionais são preferidos a desvios incondicionais A solução de cada pequena parte do problema é feita em procedimentos (ou funções) e a solução de todo problema consiste na invocação destes procedimentos Dividir para conquistar! Visa a reutilização de código Exemplos: Pascal, C 3/24

Paradigmas de programação: orientada a objetos Todo o sistema é visualizado como um conjunto de células interconectadas, denominadas objetos Cada objeto possui uma tarefa específica e por meio da troca de mensagens entre os objetos é possível realizar uma tarefa computacional Tal paradigma é ideal para o desenvolvimento de software complexos Pode trazer complexidade desnecessária para projetos pequenos ou embarcados Exemplos: Smalltalk, C++, Java, Python 4/24

Conceitos da Orientação a Objetos A Orientação a Objetos fundamenta-se sobre 5 conceitos: Objetos Classes Mensagens Herança Polimorfismo 5/24

Objetos: Definição Um objeto é um item identificável e é composto por estado e por comportamento 6/24

Objetos: Definição Um objeto é um item identificável e é composto por estado e por comportamento 6/24

Objetos Regra de ouro da orientação a objetos Identificar os estados e comportamentos de objetos do mundo real é um grande passo para se começar a pensar em termos de programação orientada a objetos Estado Representa as características do objeto Ex: Um carro possui como características uma cor, modelo, velocidade atual Comportamento Representa as operações (métodos) que este objeto é capaz de executar Ex: Um carro pode trocar de marcha, acelerar, frear, etc. 7/24

Objetos no domínio do problema Olhe ao redor e escolha dois objetos. Para estes responda: Quais os possíveis estados que este objeto pode assumir? Quais os possíveis comportamentos que este objeto pode ter? 8/24

Objetos no domínio do problema Olhe ao redor e escolha dois objetos. Para estes responda: Quais os possíveis estados que este objeto pode assumir? Quais os possíveis comportamentos que este objeto pode ter? É possível notar diferentes níveis de complexidade de cada objeto Por exemplo: lâmpada vs computador É possível notar que alguns objetos podem conter outros objetos Um computador possui um disco rígido, este último por sua vez também é um objeto 8/24

Objetos em sistemas computacionais Objetos de software são semelhantes aos objetos reais Um objeto armazena seu estado em atributos e seu comportamento se dá por meio de operações (métodos) 9/24

Objetos em sistemas computacionais Objetos de software são semelhantes aos objetos reais Um objeto armazena seu estado em atributos e seu comportamento se dá por meio de operações (métodos) Métodos de um objeto são invocados para realizar uma determinada computação e potencialmente para modificar os atributos deste objeto 9/24

Objetos em sistemas computacionais Objetos de software são semelhantes aos objetos reais Um objeto armazena seu estado em atributos e seu comportamento se dá por meio de operações (métodos) Métodos de um objeto são invocados para realizar uma determinada computação e potencialmente para modificar os atributos deste objeto programador: Qual a tua velocidade atual? objeto carro: 20 km/hora programador: Diminua a velocidade em 10% objeto carro: Ok 9/24

Encapsulamento Definição Processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais. Ex: uma caixa preta A interação entre objetos se dá através da troca de mensagens O emissor da mensagem não precisa conhecer como o destinatário processará a mensagem, ao emissor só importa receber a resposta 10/24

Encapsulamento Definição Processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais. Ex: uma caixa preta A interação entre objetos se dá através da troca de mensagens O emissor da mensagem não precisa conhecer como o destinatário processará a mensagem, ao emissor só importa receber a resposta Exemplo: System.out.println("Ola mundo"); Mensagens são compostas por três partes 1 Objeto: System.out 2 Nome do método: println 3 Parâmetros: "Ola mundo" 10/24

Encapsulamento Vantagem do encapsulamento A implementação dentro de uma operação pode ser alterada sem que isso implique na alteração do código do objeto requisitante A interface de um objeto corresponde ao que ele conhece e ao que ele sabe fazer, no entanto sem descrever como ele conhece ou faz O emissor das mensagens precisa saber quais operações o destinatário é capaz de realizar ou quais informações o destinatário pode fornecer 11/24

Encapsulamento: Exemplo Sistema de freio hidráulico Freios funcionam por meio de um sistema de pistões e mangueiras por onde circula o fluído de freio Ao pisar no pedal de freio, aciona-se o cilindro mestre que irá pressurizar o fluído. Esse fluído transmite a pressão exercida no pedal até as rodas, acionando o freio. 12/24

Encapsulamento: Exemplo Sistema de freio hidráulico 13/24

Encapsulamento: Exemplo Sistema de freio hidráulico 13/24

Encapsulamento: Exemplo Sistema de freio hidráulico Como você faz para frear um carro com o sistema de freio a tambor? 13/24

Encapsulamento: Exemplo Sistema de freio hidráulico Como você faz para frear um carro com o sistema de freio a tambor? Como você faz para frear um carro com o sistema de freio a disco? 13/24

Encapsulamento: Exemplo Sistema de freio hidráulico Objeto: Fusca Para diminuir a velocidade do carro basta pressionar o pedal do freio Não é necessário entender como o mecanismo de freio funciona, mas ao acionar o freio o Fusca irá diminuir sua velocidade 14/24

Encapsulamento: Exemplo Sistema de freio hidráulico Objeto: Fusca Para diminuir a velocidade do carro basta pressionar o pedal do freio Não é necessário entender como o mecanismo de freio funciona, mas ao acionar o freio o Fusca irá diminuir sua velocidade 6 System.out.println("Acionando o freio do Fusca"); 7 fusca.frear(); 8 9 System.out.println("Acionando o freio da Ferrari"); 10 ferrari.frear(); 14/24

Classes Fusca Classe é uma planta (projeto) que indica como os objetos deverão ser construídos Cada carro é construído com base em um mesmo projeto de engenharia e por consequência todos carros possuirão os mesmos componentes 15/24

Classes Fusca Classe é uma planta (projeto) que indica como os objetos deverão ser construídos Cada carro é construído com base em um mesmo projeto de engenharia e por consequência todos carros possuirão os mesmos componentes Classe 15/24

Classes Fusca Classe é uma planta (projeto) que indica como os objetos deverão ser construídos Cada carro é construído com base em um mesmo projeto de engenharia e por consequência todos carros possuirão os mesmos componentes Classe Objetos 15/24

Identifique as classes e os objetos Carro Árvore Pessoa Corsa Gol Araucária Ipê João José 16/24

Uma classe em Java 11 public class Carro{ 12 // atributos 13 private double velocidade; 14 private String marca; 15 private String modelo; 16 // metodos 17 public void acelerar(double intensidade){ 18... 19 } 20 public void frear(double intensidade){ 21... 22 } 23 public String obtermarca(){ 24 return marca; 25 } 26 public void imprimirvelocidade(){ 27 System.out.println("Velocidade: " + velocidade); 28 } 29 } 17/24

Representação gráfica em UML da classe Carro 18/24

Representação gráfica em UML da classe Carro Linguagem de modelagem unificada UML Uma linguagem padrão para a modelagem de sistemas, amplamente utilizada tanto pela indústria do software quanto por instituições acadêmicas. 18/24

Abstração Trata-se do processo mental que nós seres humanos nos atemos aos aspectos mais relevantes de alguma coisa, ao mesmo tempo que ignoramos os aspectos menos importantes Isso nos permite gerenciar a complexidade de um objeto, ao mesmo tempo que concentramos nossa atenção nas características essenciais do mesmo Note que abstração é dependente do contexto sobre o qual este algo é analisado O que é importante em um contexto pode não ser importante em outro 19/24

Abstração 20/24

Abstração: Exemplo Sistema para revenda de carros Necessita de um sistema para controlar os carros do estoque Quais são as características essenciais para um carro? Jogo de Fórmula 1 Um usuário deseja controlar seu carro no jogo Quais são as características essenciais para um carro? 21/24

Abstração: Exemplo Sistema para revenda de carros Necessita de um sistema para controlar os carros do estoque Quais são as características essenciais para um carro? Atributos: código, marca, modelo, ano, preço Métodos: obtercódigo, obtermodelo, definirpreço, etc. Jogo de Fórmula 1 Um usuário deseja controlar seu carro no jogo Quais são as características essenciais para um carro? Atributos: código, cor, velocidadeatual, velocidademaxima Métodos: frear, acelerar, trocarpneus, etc. 21/24

Primeiro exercício: Um contador 22/24

Primeiro exercício: Um contador A classe Contador possui um único atributo valoratual A classe provê métodos para: Atribuir um valor ao contador Incrementar o contador Obter o atual valor do contador 22/24

Exercício Comutador (switch) A figura acima apresenta um ativo de rede (switch) 1 Pense em um contexto e realize o processo de abstração para coletar as informações essenciais deste objeto para o contexto escolhido 2 Desenhe uma classe em UML para representar este objeto, de acordo com as informações que levantou no item anterior 3 Implemente em Java a classe para o comutador e um aplicativo Java (classe Java com método main). Crie um objeto da classe Comutador e invoque alguns de seus métodos. 23/24

Bibliografia

Leitura obrigatória CAELUM ENSINO E SOLUÇÕES EM JAVA APOSTILA CAELUM FJ-11 JAVA E ORIENTAÇÃO A OBJETOS http://docente.ifsc.edu.br/mello/livros/java Capítulos 4 e 5 24/24