1.

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Paulo Marques Hernâni Pedroso
Engenharia de Software
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Diagrama de Classes.
Paradigmas de Programação
Engenharia de Software
Análise e Projeto de Sistemas
Modelagem Orientada a Objetos
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Introdução ao paradigma de programação: Orientado a Objetos
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Introdução a diagrama de classes e UML
Diagrama de Classes.
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Programação orientada a objetos com Java
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
TÉCNICAS DE PROGRAMAÇÃO II
DIAGRAMA DE COMPONENTES
Curso de extensão em Desenvolvimento Web
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Princípios de Orientação à Objetos
Aula prática 13 Orientação a Objetos – C++ Parte 1
Sobrecarga e Encapsulamento
Programação Orientada à Objetos
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Programação I Aula 2 (Métodos)
Métodos de Construção de Software: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Estudo dos Conceitos e Paradigmas de Programação
Classes, Objetos, Atributos e Métodos JAVA
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Orientação a Objetos Parte I
Programação Orientada à Objetos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Definição Classe Objeto Construtor de Classes Manipulando o objeto Namespace Utilização do namespace Herança Polimorfismo Encapsulamento Propriedades.
Programação Orientada a Objetos - Java
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
PROGRAMAÇÃO ORIENTADA A OBJETOS
Programação Orientada à Objetos
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros
UML e a Ferramenta Astah
Aula Prática 13 Orientação a Objeto Monitoria
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Introdução a Orientação a Objetos
Análise e Projeto de Sistemas
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
20/04/2017 Orientação a Objetos 1 1.
Módulo II Capítulo 1: Orientação a Objetos
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
1. 2 Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Prof. Hemerson Calabreze 1.  Dentro de uma garrafa, cheia de um líquido nutritivo, cai um micróbio. O micróbio se alimenta, cresce e se divide em dois.
Transcrição da apresentação:

1

Prof. Maurício Rodrigues de Morais Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais mmorais.fav@gmail.com

Aula 1 Paradigma Orientado a Objetos

Paradigma Orientado a Objetos (Conceitos) Conteúdo Paradigma Orientado a Objetos (Conceitos) Introdução a orientação a objetos Paralelo entre POO e o Paradigma Estruturado Conceitos de Orientação a Objetos Classe, Objeto e Instância Atributo e Método Atributos e Métodos Estáticos Escopo de Visibilidade Herança Sobrecarga de operador (Casting) Sobrecarga de Atributos e Métodos (Polimorfismo) Construtores Resumo

Introdução a Orientação a Objetos O Desenvolvimento Orientado a Objetos É composto de 3 atividades: Análise Orientada a Objetos Projeto Orientado a Objetos Programação Orientada a Objetos

Introdução a Orientação a Objetos Análise Orientada a Objetos “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. Porque demorou tanto tempo para que aplicássemos esses conceitos à análise e especificação 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, P. e Yourdon E. – Object-Oriented Analysis, Prentice-Hall, 1990)

Introdução a Orientação a Objetos Projeto Orientado a Objetos “Não é mais necessário que o projetista de sistemas mapeie o domínio de problema em estruturas de controle e de dados previamente definidas presentes na linguagem de implementação. Em vez disso, o projetista pode criar seus próprios tipos abstratos de dados e abstrações funcionais e mapear o domínio de mundo real dessas abstrações criadas pelo programador. Esse mapeamento, incidentalmente, pode ser muito mais natural por causa da variedade virtualmente ilimitada de tipos abstratos que podem ser inventados pelo projetista. Além disso, o projeto de software torna-se desvinculado dos detalhes de representação dos objetos de dados do sistema. Esses detalhes de representação podem ser mudados muitas vezes sem que quaisquer efeitos inesperados sejam induzidos no sistema de software” (Wierner, R. e Sincover R. – Software Engineering with Modula-2 and Ada, Wiley, 1984)

Introdução a Orientação a Objetos Programação Orientada a Objetos “ (...) se ocupa de realizar um projeto utilizando uma linguagem de programação orientada a objetos, por exemplo, a linguagem Java, que aceita a implementação direta de objetos e fornece recursos para definir as classes de objetos.” (Sommerville I. – Engenharia de Software, Pearson Education, 2004)

Introdução a Orientação a Objetos Afinal, o que é OO Uma nova(?) maneira de ver a confecção de softwares, baseada na percepção de realidade a que estamos acostumados desde que nascemos, relacionando “coisas” e “ações” e utilizando esse relacionamento como base para confecção de componentes de software.

Introdução a Orientação a Objetos Porque OO levou tanto tempo para se tornar um padrão comercial? Basicamente, porque os primeiros modelos de Engenharia de Software foram idealizados pensando-se nas ferramentas utilizadas (linguagens, arquiteturas de máquina, etc.) e focando-se o fluxo de dados, modelos lógicos e matemáticos. Faltava-nos uma alternativa viável para aplicar aos sistemas computacionais a maneira singular com que vemos a realidade. Essa alternativa surgiu com o desenvolvimento de uma metodologia de Orientação a Objetos e com a produção de ferramentas de auxílio à modelagem e desenvolvimento de aplicações seguindo esse paradigma.

Introdução a Orientação a Objetos Características de um Software Orientado a Obejtos Componentização Flexibilidade Manutabilidade Reaproveitamento de Código Escalabilidade

Introdução a Orientação a Objetos Qualidades esperadas de um Software Orientado a Obejtos Encapsulamento: O mundo externo não precisa saber como uma determinada classe implementa suas operações, apenas como chamá-la e o que esperar em retorno; Coesão: Cada componente tem uma responsabilidade específica e delimitada dentro do todo. Baixo Acoplamento: Cada componente está associado apenas àqueles de quem precisa.

Paralelo entre programação Estruturada e OO Afinal no que difere o paradigma de Orientação a Objeto do paradigma Estruturado? Simplesmente, na maneira de definir, projetar, organizar e implementar o software, ou seja, quase tudo. Seria mais fácil falar em termos do que permanece igual: as estruturas de controle e alguma sintaxe de programação são as mesmas, mas exige o reaprendizado de concepção de software.

Paralelo entre programação Estruturada e OO Paradigma Estruturado Paradigma Orientado a Objetos Análise voltada ao fluxo de dados Análise voltada à identificação de componentes Arquitetura baseada em módulos Arquitetura baseada em componentes Implementação baseada em funções e procedimentos Implementação baseada em classes, atributos e métodos Acoplamento natural entre entidades de código Desacoplamento e encapsulamento naturais Rigidez natural de arquitetura Flexibilidade natural de arquitetura

Conceitos de Orientação a Objetos Um glossário simples de conceitos básicos de OO: Classe: É um componente de software. Em termos de programação, uma estrutura de dados agregada à operações que podem se executados sobre esses dados. Pode ser vista como um “gabarito” a partir do qual objetos serão criados em tempo de execução.

Conceitos de Orientação a Objetos Pode ser entendido como um caso concreto criado a partir do “gabarito” de uma Classe, sendo uma representação virtual de algo existente no mundo real. Instância: Um objeto com características específicas, próprias, criado a partir de uma Classe, ou modelo. O processo de criação de um objeto é chamado de instanciação

Conceitos de Orientação a Objetos Atributo: Fazem parte da Classe e são eles que definem as características que as instâncias desta terão, conferindo-lhe a funcionalidade de uma estrutura de dados. Método: São blocos de código encapsulados na definição de uma Classe e fazem parte do “gabarito” definido pela mesma. Desse modo, são ações ou operações que podem ser executadas sobre os dados armazenados em um componente, ou ainda, funcionalidades oferecidas por um componente em sua Interface Pública.

Conceitos de Orientação a Objetos Atributo Estático: Também conhecidos como Atributos de Classe, estes também podem ser acessados sem a necessidade de se ter um objeto instanciado. Método Estático: Também conhecidos com métodos de Classe, são aqueles que não precisam ser executados a partir de um objeto, uma instância, mas a partir da própria classe.

Conceitos de Orientação a Objetos Escopo de visibilidade: Pode-se entender como Escopo o grau de visibilidade que um atributo ou método de uma Classe tem em relação a outras classes. Existem 4 tipos definidos (em ordem decrescente de visibilidade): public, package, protected e private. Uma característica (atributo ou método) public pode ser visto por outras Classes/Objetos; uma package pode ser vista apenas por componentes do mesmo pacote; protected apenas pelos componentes que sejam herdeiros da Classe em questão – o Conceito de Herança será definido mais adiante; e private só pode ser vista pelo próprio componente.

Conceitos de Orientação a Objetos Herança: Uma Classe pode ser declarada como sendo uma extensão (ou filha) de uma outra, herdando assim todas as suas característica e tendo a possibilidade de expandir/modificar seu comportamento. Este é um conceito fundamental em OO e é um dos pilares de sua estruturação. Boa parte da flexibilidade e possibilidade de reutilização de código deste paradigma se dá pela possibilidade de expansão/modificação de componentes já existentes.

Conceitos de Orientação a Objetos Sobrecarga de operador: Normalmente conhecido como Casting, é amplamente utilizado em aplicações OO e se dá quando, tendo sido declarada uma variável de determinado tipo, se atribui a ela um objeto de tipo distinto. Esse conceito não viola o conceito de linguagem fortemente tipada porque se dá sob o conceito de Herança. Assim, podemos declarar uma variável do tipo pai (em termos de herança) e atribuir-lhe um objeto do tipo filho.

Conceitos de Orientação a Objetos Sobrecarga de atributos e métodos: Também conhecido como Polimorfismo, se dá quando, numa Classe “filho” desejamos alterar o comportamento de um método já definido pelo “pai”. Nesse caso, declaramos no “filho” uma característica com a mesma assinatura (nome, em caso de atributos; nome, tipo de dado de retorno, tipos e nomes de parâmetros, em caso de métodos) de uma característica do “pai”, mas com um tipo (atributos) ou comportamento (métodos) distinto deste.

Conceitos de Orientação a Objetos Construtores: São Métodos especiais utilizados no processo de instanciação. Para se criar uma nova instância de uma Classe executamos o método construtor, que tem por responsabilidade efetuar operações preliminares da criação do objeto (atribuição de valores a propriedades, alocação de recursos, etc.) e que devolve, a quem o executou, a nova instância gerada.

Resumo Orientação a objetos, apesar de não ser um conceito novo se pensarmos em termos de sua primeira formulação, tem se mostrado uma inovação no mercado de desenvolvimento de software. Vários conceitos são novos aos desenvolvedores acostumados à programação estruturada e os aplicativos devem começar a ser vistos sob uma nova ótica. Porém, uma vez que nos habituemos a essa “nova visão”, percebemos que o desenvolvimento de software passa a ser mais fácil em termos de concepção e mais flexível em termos de implementação. O surgimento de linguagens como Java e todo um rol de ferramentas de apoio ao desenvolvimento nessa linguagem foi um fator definitivo na adoção da Orientação a Objetos no mercado.