Orientação a objetos v2

Post on 04-Jul-2015

958 views 2 download

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

ORIENTAÇÃO A OBJETOS...

1Thursday, June 14, 2012

ORIENTAÇÃO A OBJETOSSIM, MAIS UMA PALESTRA DE

2Thursday, June 14, 2012

ORIENTAÇÃO A OBJETOSSIM, MAIS UMA PALESTRA DE

@AUGUSTOHP@ALGANET

3Thursday, June 14, 2012

AGENDA

4Thursday, June 14, 2012

AGENDA

CONCEITOS

4Thursday, June 14, 2012

AGENDA

CONCEITOS

PARADIGMAS DE PROGRAMAÇÃO

4Thursday, June 14, 2012

CONCEITOS

5Thursday, June 14, 2012

ESTADO

6Thursday, June 14, 2012

ESTADOhardware na maioria das vezes nem sabe o estado

7Thursday, June 14, 2012

ESTADOhardware na maioria das vezes nem sabe o estado

BRINCADEIRA

8Thursday, June 14, 2012

ESTADO

9Thursday, June 14, 2012

TIPAGEM

10Thursday, June 14, 2012

TIPAGEM

11Thursday, June 14, 2012

REUSO

12Thursday, June 14, 2012

REUSO

13Thursday, June 14, 2012

FIBONACCI

14Thursday, June 14, 2012

SEQUÊNCIA DE FIBONACCI

15Thursday, June 14, 2012

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

16Thursday, June 14, 2012

PARADIGMAS DE PROGRAMAÇÃO

17Thursday, June 14, 2012

ASSEMBLY

18Thursday, June 14, 2012

.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

.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

.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

.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

.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

PROCEDURAL

24Thursday, June 14, 2012

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

1235813213455891442333776109871597258441816765

26Thursday, June 14, 2012

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

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

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

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

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

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

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

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

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

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

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

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

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

ORIENTADO A OBJETOS

40Thursday, June 14, 2012

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

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

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

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

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

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

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

47Thursday, June 14, 2012

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

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

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

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

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

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

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

DESIGN PATTERNS

56Thursday, June 14, 2012

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

57Thursday, June 14, 2012

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

COMPOSIÇÃO >

GENERALIZAÇÃO

59Thursday, June 14, 2012

AGENDA

60Thursday, June 14, 2012

AGENDA

CONCEITOS

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

PROCEDURAL

60Thursday, June 14, 2012

AGENDA

CONCEITOS

ESTADO, TIPAGEM E REUSO

SEQUÊNCIA DE FIBONACCI

PARADIGMAS DE PROGRAMAÇÃO

ASSEMBLY

PROCEDURAL

ORIENTAÇÃO A OBJETOS

60Thursday, June 14, 2012

PERGUNTAS?

61Thursday, June 14, 2012

OBRIGADO!

62Thursday, June 14, 2012

RECADOS DA PARÓQUIA

HTTP://WWW.THEDEVELOPERSCONFERENCE.COM.BR

4 a 8 julho

63Thursday, June 14, 2012