File: oop.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (165 lines) | stat: -rw-r--r-- 4,896 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?xml version="1.0" encoding="iso-8859-1"?>
 <chapter id="language.oop">
  <title>Classes e Objetos</title>

  <sect1 id="keyword.class">
   <title><literal>classe</literal></title>
   <para>
    Uma classe  uma coleo de variveis e funes trabalhando com essas
    variveis. Uma classe  definida usando-se a seguinte sintaxe:
 
    <informalexample>
     <programlisting role="php">
&lt;?php
class Cart {
    var $items;  // Items no nosso carrinho de compras
   
    // Acrescenta $num artigos de $artnr ao carrinho
 
    function add_item ($artnr, $num) {
        $this->items[$artnr] += $num;
    }
   
    // Tira $num artigos de $artnr do carrinho
 
    function remove_item ($artnr, $num) {
        if ($this->items[$artnr] > $num) {
            $this->items[$artnr] -= $num;
            return true;
        } else {
            return false;
        }   
    }
}
?>
     </programlisting>
    </informalexample>
   </para>
 
   <para>
    Isto define uma classe chamada Cart que consiste de uma matriz associativa de
    artigos no carrinho e duas funes para acrescentar e remover items deste 
    carrinho.
   </para>
   <para>
    Classes so tipos, ou seja, eles so modelos de variveis atuais. Voc tem que 
    criar uma varivel do tipo desejado com o novo operador.
   </para>
 
   <informalexample>
    <programlisting role="php">
 $cart = new Cart;
 $cart->add_item("10", 1);
    </programlisting>
   </informalexample>
 
   <para>
    Isto cria um objeto $cart da classe Cart. A funo
    add_item() daquele objeto est sendo chamada para acrescentar 1 item do artigo
    nmero 10 ao carrinho. </para><para> Classes podem ser extenses de outras classes.
    A classe estendida ou derivada tem todas as variveis e funes da classe base e o
    que voc acrescentar na definio estendida. Isto  feito usando-se a palavra-chave
    'extends'. Herana mltipla no  suportada.
   </para>
 
   <informalexample>
    <programlisting role="php">
class Named_Cart extends Cart {
    var $owner;
  
    function set_owner ($name) {
        $this->owner = $name;
    }
}
    </programlisting>
   </informalexample>
 
   <para>
    Isto define uma classe Named_Cart que tem todas as variveis e funes de Cart mais 
    uma varivel adicional $owner e uma funo adicional set_owner(). Voc pode criar um
    carrinho com nome na forma normal, e agora pode setar e obter o proprietrio do carrinho.
    Voc pode ainda usar as funes normais do carrinho em carrinhos com nomes:
   </para>
 
   <informalexample>
    <programlisting role="php">
$ncart = new Named_Cart;    // Cria um carrinho com nome
$ncart->set_owner ("kris"); // Nomeia aquele carrinho
print $ncart->owner;        // imprime o nome dos proprietrios do carrinho
$ncart->add_item ("10", 1); // (funcionalidade herdada de 'cart')
    </programlisting>
   </informalexample>
  
   <para>
    Dentro das funes de uma classe, a varivel $this significa este objeto. Voc tem que 
    usar $this->algo para acessar qualquer varivel ou funo chamada 'algo' dentro do seu
    objeto corrente.
   </para>
   <para>
    Construtores so funes em uma classe que so chamadas automaticamente quando voc cria 
    uma nova instncia de uma classe. Uma funo se torna um construtor quando ela tem o 
    mesmo nome que a classe.
   </para>
 
   <informalexample>
    <programlisting role="php">
class Auto_Cart extends Cart {
    function Auto_Cart () {
        $this->add_item ("10", 1);
    }
}
    </programlisting>
   </informalexample>
 
   <para>
    Isto define uma classe Auto_Cart que  um Cart mais um construtor que inicializa o 
    'cart' com um item do artigo nmero "10" cada vez que um novo Auto_Cart est sendo
    feito com "new". Construtores tambm podem levar argumentos e esses argumentos podem
    ser opcionais, o que os torna muito mais teis.
   </para>
 
   <informalexample>
    <programlisting role="php">
class Constructor_Cart extends Cart {
    function Constructor_Cart ($item = "10", $num = 1) {
        $this->add_item ($item, $num);
    }
}
 
// Compra aquele mesmo material velho e chato.
 
$default_cart   = new Constructor_Cart;
 
// Compra para valer...
 
$different_cart = new Constructor_Cart ("20", 17);
    </programlisting>
   </informalexample>
 
   <caution>
    <simpara>
     Para classes derivadas, o construtor da classe pai no  chamado automaticamente 
     quando o construtor da classe derivada  chamado.
    </simpara> 
   </caution>
  </sect1>
 
 </chapter>
 
 <!-- Keep this comment at the end of the file
 Local variables:
 mode: sgml
 sgml-omittag:t
 sgml-shorttag:t
 sgml-minimize-attributes:nil
 sgml-always-quote-attributes:t
 sgml-indent-step:1
 sgml-indent-data:t
indent-tabs-mode:nil
 sgml-parent-document:nil
 sgml-default-dtd-file:"../../manual.ced"
 sgml-exposed-tags:nil
 sgml-local-catalogs:nil
 sgml-local-ecat-files:nil
 End:
 -->