Orientação a objetos v2

72
ORIENTAÇÃO A OBJETOS ... 1 Thursday, June 14, 2012

description

Uma breve evolução dos paradigmas de programação até a Orientação a Objetos, assim como apresentação de alguns recursos da mesma dentro do contexto de programação. Códigos Utilizados: https://github.com/augustohp/palestra-orientacao-objetos Avaliações: - VII Congresso Uniararas: https://joind.in/6692

Transcript of Orientação a objetos v2

Page 1: Orientação a objetos v2

ORIENTAÇÃO A OBJETOS...

1Thursday, June 14, 2012

Page 2: Orientação a objetos v2

ORIENTAÇÃO A OBJETOSSIM, MAIS UMA PALESTRA DE

2Thursday, June 14, 2012

Page 3: Orientação a objetos v2

ORIENTAÇÃO A OBJETOSSIM, MAIS UMA PALESTRA DE

@AUGUSTOHP@ALGANET

3Thursday, June 14, 2012

Page 4: Orientação a objetos v2

AGENDA

4Thursday, June 14, 2012

Page 5: Orientação a objetos v2

AGENDA

CONCEITOS

4Thursday, June 14, 2012

Page 6: Orientação a objetos v2

AGENDA

CONCEITOS

PARADIGMAS DE PROGRAMAÇÃO

4Thursday, June 14, 2012

Page 7: Orientação a objetos v2

CONCEITOS

5Thursday, June 14, 2012

Page 8: Orientação a objetos v2

ESTADO

6Thursday, June 14, 2012

Page 9: Orientação a objetos v2

ESTADOhardware na maioria das vezes nem sabe o estado

7Thursday, June 14, 2012

Page 10: Orientação a objetos v2

ESTADOhardware na maioria das vezes nem sabe o estado

BRINCADEIRA

8Thursday, June 14, 2012

Page 11: Orientação a objetos v2

ESTADO

9Thursday, June 14, 2012

Page 12: Orientação a objetos v2

TIPAGEM

10Thursday, June 14, 2012

Page 13: Orientação a objetos v2

TIPAGEM

11Thursday, June 14, 2012

Page 14: Orientação a objetos v2

REUSO

12Thursday, June 14, 2012

Page 15: Orientação a objetos v2

REUSO

13Thursday, June 14, 2012

Page 16: Orientação a objetos v2

FIBONACCI

14Thursday, June 14, 2012

Page 17: Orientação a objetos v2

SEQUÊNCIA DE FIBONACCI

15Thursday, June 14, 2012

Page 18: Orientação a objetos v2

SEQUÊNCIA DE FIBONACCIHTTPS://EN.WIKIPEDIA.ORG/WIKI/FIBONACCI_NUMBER

16Thursday, June 14, 2012

Page 19: Orientação a objetos v2

PARADIGMAS DE PROGRAMAÇÃO

17Thursday, June 14, 2012

Page 20: Orientação a objetos v2

ASSEMBLY

18Thursday, June 14, 2012

Page 21: Orientação a objetos v2

.datafibonacci DWORD 100 dup (0).codemov edx,offset fibonaccimov eax,1mov ebx,1mov ecx,49@@:mov DWORD PTR [edx],eaxmov DWORD PTR [edx+4],ebxadd eax,ebxadd ebx,eaxadd edx,8sub ecx,1jnz @B

HTTP://WWW.CODECODEX.COM/WIKI/FIBONACCI_SEQUENCE#80386.2B_ASSEMBLY

19Thursday, June 14, 2012

Page 22: Orientação a objetos v2

.datafibonacci DWORD 100 dup (0).codemov edx,offset fibonaccimov eax,1mov ebx,1mov ecx,49@@:mov DWORD PTR [edx],eaxmov DWORD PTR [edx+4],ebxadd eax,ebxadd ebx,eaxadd edx,8sub ecx,1jnz @B

HTTP://WWW.CODECODEX.COM/WIKI/FIBONACCI_SEQUENCE#80386.2B_ASSEMBLY

20Thursday, June 14, 2012

Page 23: Orientação a objetos v2

.datafibonacci DWORD 100 dup (0).codemov edx,offset fibonaccimov eax,1mov ebx,1mov ecx,49@@:mov DWORD PTR [edx],eaxmov DWORD PTR [edx+4],ebxadd eax,ebxadd ebx,eaxadd edx,8sub ecx,1jnz @B

HTTP://WWW.CODECODEX.COM/WIKI/FIBONACCI_SEQUENCE#80386.2B_ASSEMBLY

21Thursday, June 14, 2012

Page 24: Orientação a objetos v2

.datafibonacci DWORD 100 dup (0).codemov edx,offset fibonaccimov eax,1mov ebx,1mov ecx,49@@:mov DWORD PTR [edx],eaxmov DWORD PTR [edx+4],ebxadd eax,ebxadd ebx,eaxadd edx,8sub ecx,1jnz @B

HTTP://WWW.CODECODEX.COM/WIKI/FIBONACCI_SEQUENCE#80386.2B_ASSEMBLY

22Thursday, June 14, 2012

Page 25: Orientação a objetos v2

.386.model  Flatpublic  Fibonacciinclude  iosmacros.inc  ;  inclui  macros  de  output  para  tela

.codeFibonacci  proc

       MOV  EAX,  [ESP+4]        CMP  EAX,  1        JA  Recurse        MOV  EAX,  1                ;  retorna  o  valor  de  eax        JMP  exit

Recurse:        PUSH  EBX                    ;  preserva  o  valor  de  ebx        DEC  EAX        PUSH  EAX        CALL  Fibonacci        MOV  EBX,  EAX            ;  ebx  preservado,  seguro  de  usar        DEC  [ESP]                  ;  decrementa  o  valor  no  stack        CALL  Fibonacci        ADD  EAX,  EBX            ;  retorna  o  valor  em  eax        ADD  ESP,  4                ;  remove  o  valor  do  stack        POP  EBX                      ;  restaura  o  valor  antigo  de  ebxexit:retFibonacci  endp HTTP://STACKOVERFLOW.COM/QUESTIONS/5616684/RECURSIVE-FIBONACCI-IN-ASSEMBLY

23Thursday, June 14, 2012

Page 26: Orientação a objetos v2

PROCEDURAL

24Thursday, June 14, 2012

Page 27: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

25Thursday, June 14, 2012

Page 28: Orientação a objetos v2

1235813213455891442333776109871597258441816765

26Thursday, June 14, 2012

Page 29: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

27Thursday, June 14, 2012

Page 30: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

28Thursday, June 14, 2012

Page 31: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

29Thursday, June 14, 2012

Page 32: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

30Thursday, June 14, 2012

Page 33: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

31Thursday, June 14, 2012

Page 34: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

32Thursday, June 14, 2012

Page 35: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

33Thursday, June 14, 2012

Page 36: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

34Thursday, June 14, 2012

Page 37: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

35Thursday, June 14, 2012

Page 38: Orientação a objetos v2

1 <?php 2 $past = 0; 3 $current = 1; 4 $limit = 20; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 }

HTTP://WWW.DREAMINCODE.NET/CODE/SNIPPET920.HTM

36Thursday, June 14, 2012

Page 39: Orientação a objetos v2

1 <?php 2 function fibonacci($limit) { 3 $past = 0; 4 $current = 1; 5 for($i=1; $i<$limit; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 echo $final . PHP_EOL; 10 } 11 } 12 fibonacci(20);

37Thursday, June 14, 2012

Page 40: Orientação a objetos v2

1 <?php 2 function fibonacci($iteration) { 3 $past = 0; 4 $current = 1; 5 for($i=1; $i<$iteration; $i++) { 6 $final = $past + $current; 7 $past = $current; 8 $current = $final; 9 } 10 return $current; 11 } 12 echo fibonacci(20) . PHP_EOL; // 6765

38Thursday, June 14, 2012

Page 41: Orientação a objetos v2

1 <?php 2 require 'fibonacci-func-return.php'; 3 4 for ($i=1; $i<=20; $i++) 5 echo fibonacci($i) . PHP_EOL;

39Thursday, June 14, 2012

Page 42: Orientação a objetos v2

ORIENTADO A OBJETOS

40Thursday, June 14, 2012

Page 43: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

41Thursday, June 14, 2012

Page 44: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

INSTÂNCIA

42Thursday, June 14, 2012

Page 45: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

CLASSE

43Thursday, June 14, 2012

Page 46: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

44Thursday, June 14, 2012

Page 47: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

45Thursday, June 14, 2012

Page 48: Orientação a objetos v2

1 <?php 2 require 'Fibonacci.php'; 3 4 $iterator = new Fibonacci(20); 5 while ($iterator->valid()) { 6 echo $iterator->current() . PHP_EOL; 7 $iterator->next(); 8 }

46Thursday, June 14, 2012

Page 49: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // Conteúdo da classe 5 }

47Thursday, June 14, 2012

Page 50: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 /** 5 * Número anterior, o primeiro na sequência é o 0 (zero). 6 * 7 * @var integer 8 */ 9 protected $previous = 0; 10 /** 11 * Número atual, o segundo na sequência é o 1 (um). 12 * 13 * @var integer 14 */ 15 protected $current = 1; 16 /** 17 * Número da iteração. 18 * 19 * @var integer 20 */ 21 protected $iteration = 0; 22 /** 23 * Qual o limite de iterações a executar. 24 * 25 * @var integer 26 */ 27 protected $limit; 28 }

48Thursday, June 14, 2012

Page 51: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... (Proriedades) 5 6 /** 7 * Construtor. 8 * 9 * @example $i = new Fibonacci(25); 10 * @param integer $n=25 Limite de iterações 11 */ 12 public function __construct($n=25) 13 { 14 $this->limit = $n; 15 } 16 17 // ... (outros métodos) 18 }

49Thursday, June 14, 2012

Page 52: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... (Construtor e Propriedades) 5 6 /** 7 * Retorna o elemento atual da sequência. 8 * 9 * @return integer 10 */ 11 public function current() 12 { 13 return $this->current; 14 } 15 16 // ... (outros métodos) 17 }

50Thursday, June 14, 2012

Page 54: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... 5 6 /** 7 * Retorna o número da iteração atual. 8 * 9 * @return integer 10 */ 11 public function key() 12 { 13 return $this->iteration; 14 } 15 16 // ... (outros métodos) 17 }

52Thursday, June 14, 2012

Page 55: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... 5 6 /** 7 * Vai para próxima iteração. 8 * 9 * @return void 10 */ 11 public function next() 12 { 13 $final = $this->current + $this->previous; 14 $this->previous = $this->current; 15 $this->current = $final; 16 $this->iteration++; 17 } 18 19 // ... (outros métodos) 20 }

53Thursday, June 14, 2012

Page 56: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... 5 6 /** 7 * Volta para primeira iteração. 8 * 9 * @return void 10 */ 11 public function rewind() 12 { 13 $this->previous = $this->iteration = 0; 14 $this->current = 1; 15 } 16 17 // ... (outros métodos) 18 }

54Thursday, June 14, 2012

Page 57: Orientação a objetos v2

1 <?php 2 class Fibonacci 3 { 4 // ... 5 6 /** 7 * Retorna se existe uma próxima iteração válida. 8 * Caso não existe, executa Fibonacci::rewind(). 9 * 10 * @see Fibanacci::rewind() 11 * @return boolean 12 */ 13 public function valid() 14 { 15 if ($this->iteration < $this->limit) 16 return true; 17 18 $this->rewind(); 19 return false; 20 } 21 }

55Thursday, June 14, 2012

Page 58: Orientação a objetos v2

DESIGN PATTERNS

56Thursday, June 14, 2012

Page 59: Orientação a objetos v2

1 <?php 2 class FibonacciIterator implements Iterator 3 { 4 // ... 5 }

57Thursday, June 14, 2012

Page 60: Orientação a objetos v2

1 <?php 2 require 'FibonacciIterator.php'; 3 4 foreach ($iterator as $i) 5 echo $i . PHP_EOL;

HTTP://PHP.NET/ITERATOR

58Thursday, June 14, 2012

Page 61: Orientação a objetos v2

COMPOSIÇÃO >

GENERALIZAÇÃO

59Thursday, June 14, 2012

Page 62: Orientação a objetos v2

AGENDA

60Thursday, June 14, 2012

Page 63: Orientação a objetos v2

AGENDA

CONCEITOS

60Thursday, June 14, 2012

Page 64: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

60Thursday, June 14, 2012

Page 65: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

60Thursday, June 14, 2012

Page 66: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

60Thursday, June 14, 2012

Page 67: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

60Thursday, June 14, 2012

Page 68: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

PROCEDURAL

60Thursday, June 14, 2012

Page 69: Orientação a objetos v2

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

PROCEDURAL

ORIENTAÇÃO A OBJETOS

60Thursday, June 14, 2012

Page 70: Orientação a objetos v2

PERGUNTAS?

61Thursday, June 14, 2012

Page 71: Orientação a objetos v2

OBRIGADO!

62Thursday, June 14, 2012

Page 72: Orientação a objetos v2

RECADOS DA PARÓQUIA

HTTP://WWW.THEDEVELOPERSCONFERENCE.COM.BR

4 a 8 julho

63Thursday, June 14, 2012