A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1.

Apresentações semelhantes


Apresentação em tema: "1."— Transcrição da apresentação:

1 1

2 Prof. Maurício Rodrigues de Morais
Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais

3 Aula 1 Paradigma Orientado a Objetos

4 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

5 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

6 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)

7 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)

8 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)

9 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.

10 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.

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

12 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.

13 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.

14 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

15 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.

16 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

17 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.

18 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.

19 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.

20 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.

21 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.

22 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.

23 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.

24 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.


Carregar ppt "1."

Apresentações semelhantes


Anúncios Google