O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Virada Tecnológica 2017

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Java 00 Poo
Java 00 Poo
Carregando em…3
×

Confira estes a seguir

1 de 44 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Virada Tecnológica 2017 (20)

Anúncio

Mais recentes (20)

Virada Tecnológica 2017

  1. 1. Introdução à Orientação à Objetos com C++ e Python Orlando Saraiva Jr saraiva@uniararas.br
  2. 2. Agenda Quem é esse cara aí ? Linguagens que usaremos Motivações para Orientação a Objetos Classes e Objetos Construtores, Destrutores Composição Herança e Herança múltipla Polimorfismo
  3. 3. Orlando Saraiva Jr Mestre em Tecnologia Pós- Graduado em Gestão de Negócios Graduado em Tecnologia em Informática Professor Universitário ( FHO Uniararas) Suporte Acadêmico na Unesp (Rio Claro) Autor do melhor livro de Orientação à Objetos, segundo minha mãe.
  4. 4. Linguagens
  5. 5. C++ Compilada Multiplataforma Tipagem Forte e Estática Nas entrevistas de emprego, vão te achar especial quando você disser que sabe C++
  6. 6. Python Interpretada Multiplataforma Tipagem Forte e Dinâmica É uma linguagem super poderosa. Tá brigando com o JS para ver quem domina o mundo primeiro.
  7. 7. Como baixar os códigos $ git clone https://github.com/orlandosaraivajr/ioo.git
  8. 8. Orientação à Objetos
  9. 9. Motivação Existem três sentenças que compõem o núcleo da programação estruturada: Sequencia Seleção Iteração
  10. 10. Com orientação à objetos O software tornar-se um conjunto de pequenos “componentes” mais independentes, que trocam de mensagens entre si.
  11. 11. Vamos fazer um cadastro de forma estruturada Vamos desenvolver um cadastro de três pessoas, com o objetivo de armazenar três informações: nome, idade e sexo. /ioo/03/C++/cadastro01.cpp
  12. 12. Qual o problema ? Os tipos especiais Estruturas (structs) possui limitações quanto ao acesso. Fazendo-se um paralelo, podemos pensar em uma classe como uma estrutura especial. Nesta linha de pensamento: Variáveis → Atributos Funções → Métodos /ioo/04/C++/cadastroOO.cpp /ioo/04/Python3/cadastro.py
  13. 13. Até aqui: Conhecemos a definição de classe e objeto
  14. 14. FUNCAP / 2013 Na orientação a objeto, as instâncias de uma classe são representadas por: a) atributos. b) métodos. c) objetos. d) compartilhamentos. e) interfaces.
  15. 15. FCC / 2009 Na orientação a objetos, ao nível de classe, são definidos os a) atributos e os valores dos atributos. b) atributos e a invocação das operações. c) atributos e os métodos. d) métodos e os valores dos atributos. e) métodos e a invocação das operações.
  16. 16. FUNCAP / 2013 Na orientação a objeto, as instâncias de uma classe são representadas por: a) atributos. b) métodos. c) objetos. d) compartilhamentos. e) interfaces.
  17. 17. FCC / 2009 Na orientação a objetos, ao nível de classe, são definidos os a) atributos e os valores dos atributos. b) atributos e a invocação das operações. c) atributos e os métodos. d) métodos e os valores dos atributos. e) métodos e a invocação das operações.
  18. 18. Construtores e Destrutores Quando um objeto é instanciado, os atributos podem ser inicializados pelo método construtor da classe. Construtores podem ser sobrecarregados para oferecer várias formas de instanciar os objetos. /ioo/05/C++/carro.cpp
  19. 19. Atributos da Classe As classes podem ter dois tipos de métodos e dois tipos de atributos. Os métodos de instância e os atributos de instância são os mais comuns. Os atributos da classe não pertencem às instâncias. /ioo/05/C++/carro.cpp /ioo/05/Python3/carro.py
  20. 20. Sobrecarga de método Em linguagens de tipagem estática, quando se tem dois (ou mais) métodos com o mesmo nome, porém os tipos dos parâmetros são diferentes, estamos diante de uma sobrecarga de método. /ioo/05/C++/carro.cpp /ioo/05/Python3/carro.py
  21. 21. Até aqui: Construtores e Destrutores Atributos da classe e atributos na instância Sobrecarga de métodos
  22. 22. CESGRANGRIO 2012 ( adaptado) Na programação orientada a objeto, a capacidade de construir vários métodos com um mesmo nome, porém com parâmetros diferentes na mesma classe, é chamada de a) Polimorfismo universal b) Polimorfismo paramétrico c) Polimorfismo de subtipo d) Sobrecarga de operadores e) Sobrecarga de métodos
  23. 23. CESGRANGRIO 2012 ( adaptado) Na programação orientada a objeto, a capacidade de construir vários métodos com um mesmo nome, porém com parâmetros diferentes na mesma classe, é chamada de a) Polimorfismo universal b) Polimorfismo paramétrico c) Polimorfismo de subtipo d) Sobrecarga de operadores e) Sobrecarga de métodos
  24. 24. Associação entre classes: Composição Em alguns casos, é interessante criar um relacionamento “todo/parte” entre as classes. Neste tipo de associação, um objeto maior (todo) é formado ou outros objetos (parte) são formados.
  25. 25. Associação entre classes: Agregação e Composição A essa associação especial damos o nome de agregação: representa um relacionamento do tipo “tem”. Uma variação da agregação é a associação do tipo composição. Neste caso de associação, o objeto todo é responsável pela criação e destruição de suas partes. A existência do objeto-parte não tem sentido sem o objeto-todo. /ioo/06/C++/Main.cpp
  26. 26. Um Exemplo ?! Uma caixa acoplada é composta por diversos objetos internos. /ioo/06/C++/Main.cpp
  27. 27. Objetos internos Comporta de vedação Alavanca de acionamento Válvula de alimentação Caixa Acoplada etc... /ioo/06/C++/Main.cpp
  28. 28. Mudanças de requisitos /ioo/06/C++/Main.cpp Requisito 1: Mudar a velocidade de enchimento da caixa. Precisamos que seja mais rápido. Requisito 2: Mudar o comportamento da caixa. Precisamos de uma privada inteligente. Teremos opção 1 quando o usuário fizer a opção 1 e opção 2 para um serviço mais completo por parte do usuário. Requisito 3: Contador de descargas. Como a água é um problema mundial, nossa caixa acopladora terá um contador de descargas.
  29. 29. Herança A relação de herança se baseia no princípio de que toda a codificação mais genérica pode ser transmitida para as classes mais específicas. Esta relação é conhecida por meio do relacionamento “é-um”. /ioo/07/C++/Main.cpp
  30. 30. Sobreposição A sobreposição de método (override) é o recurso por meio do qual uma classe derivada reescreve o método da classe- base a fim de atender a alguma particularidade. /ioo/07/C++/Main.cpp
  31. 31. Métodos de acesso Fonte: meu livro, 2017
  32. 32. Até aqui: Associações entre classes: Herança Composição / Agregação Métodos de acesso Sobreposição
  33. 33. EXATUS / 2015 Sobre orientação a objetos é correto afirmar que: a) O mecanismo de herança é uma forma de restringir o acesso ao comportamento interno de um objeto. b) Os atributos de uma classe representam as ações que os objetos desta classe poderão realizar. c) Os métodos de uma classe representam os dados/características que os objetos desta classe terão. d) Ao se ter um atributo encapsulado, é obrigatório que as classes implementem os métodos respectivos métodos get e set. e) De uma forma geral objetos podem ser compostos de outros objetos; esse é o princípio da composição.
  34. 34. EXATUS / 2015 Sobre orientação a objetos é correto afirmar que: a) O mecanismo de herança é uma forma de restringir o acesso ao comportamento interno de um objeto. b) Os atributos de uma classe representam as ações que os objetos desta classe poderão realizar. c) Os métodos de uma classe representam os dados/características que os objetos desta classe terão. d) Ao se ter um atributo encapsulado, é obrigatório que as classes implementem os métodos respectivos métodos get e set. e) De uma forma geral objetos podem ser compostos de outros objetos; esse é o princípio da composição.
  35. 35. Herança Múltipla A relação de herança se baseia no princípio de que toda a codificação mais genérica pode ser transmitida para as classes mais específicas. Herança múltipla é um conceito relativamente fácil, caso você tenha entendido herança simples. /ioo/08/C++/Main.cpp
  36. 36. Polimorfismo Luca Cardelli e Peter Wegner propuseram no artigo “On Understanding Types, Data Abstraction, and Polymorphism” (1985) quatro tipos de polimorfismo: Paramétrico De inclusão Coersão Sobrecarga
  37. 37. Polimorfismo /ioo/09/C++/polimorfismo/
  38. 38. Polimorfismo em Python Python tem uma forma de polimorfismo em que uma funcionalidade opera em qualquer objeto que implemente os métodos apropriadamente. Esse tipo de polimorfismo é conhecido como duck typing. Se caminha como pato e se comporta como pato, é pato! /ioo/08/C++/Main.cpp
  39. 39. Considerações Finais
  40. 40. Muito Obrigado ! Orlando Saraiva Jr saraiva@uniararas.br

×