svn: /phpdoc/it/trunk/language/oop5/ abstract.xml
| From: | Marco Cucinato | Date: | Thu, 27 May 2010 17:34:18 +0000 |
| Subject: | svn: /phpdoc/it/trunk/language/oop5/ abstract.xml | ||
| Groups: | php.doc.it | ||
| Request: | Send a blank email to doc-it+get-952@lists.php.net to get a copy of this message | ||
cucinato Thu, 27 May 2010 17:34:18 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=299865
Log:
Sync with EN
Changed paths:
A phpdoc/it/trunk/language/oop5/abstract.xml
Added: phpdoc/it/trunk/language/oop5/abstract.xml
===================================================================
--- phpdoc/it/trunk/language/oop5/abstract.xml (rev 0)
+++ phpdoc/it/trunk/language/oop5/abstract.xml 2010-05-27 17:34:18 UTC (rev 299865)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 297028 Maintainer: butera Status: ready -->
+<sect1 xml:id="language.oop5.abstract" xmlns="http://docbook.org/ns/docbook">
+<title>Astrazione delle classi</title>
+
+<para>
+PHP 5 introduce classi e metodi astratti. Non è consentita la creazione
+di un'istanza di una classe che sia stata definita astratta. Qualsiasi classe che
+contenga almeno un metodo astratto deve essere altresì astratta. I metodi
+definiti come astratti dichiarano unicamente la propria firma, mentre
+non possono dichiarare un'implementazione.
+</para>
+
+<para>
+Quando ereditati da una classe astratta, tutti i metodi segnalati come astratti nella
+dichiarazione della classe padre devono essere definiti dalla classe figlio; inoltre,
+questi metodi devono essere definiti con la stessa or a
+<link linkend="language.oop5.visibility">visibilità</link> (o con una meno
ristretta). Per esempio,
+se il metodo astratto è definito come protetto, l'implementazione della funzione
+può essere definita come protetta o publica, ma non privata.
+</para>
+
+<example>
+<title>Esempio di classe astratta</title>
+<programlisting role="php">
+<![CDATA[
+<?php
+abstract class AbstractClass
+{
+// Forza la classe estendente a definire questo metodo
+abstract protected function getValue();
+abstract protected function prefixValue($prefix);
+
+// Metodi comuni
+public function printOut() {
+print $this->getValue() . "\n";
+}
+}
+
+class ConcreteClass1 extends AbstractClass
+{
+protected function getValue() {
+return "ConcreteClass1";
+}
+
+public function prefixValue($prefix) {
+return "{$prefix}ConcreteClass1";
+}
+}
+
+class ConcreteClass2 extends AbstractClass
+{
+public function getValue() {
+return "ConcreteClass2";
+}
+
+public function prefixValue($prefix) {
+return "{$prefix}ConcreteClass2";
+}
+}
+
+$class1 = new ConcreteClass1;
+$class1->printOut();
+echo $class1->prefixValue('FOO_') ."\n";
+
+$class2 = new ConcreteClass2;
+$class2->printOut();
+echo $class2->prefixValue('FOO_') ."\n";
+?>
+]]>
+</programlisting>
+&example.outputs;
+<screen>
+<![CDATA[
+ConcreteClass1
+FOO_ConcreteClass1
+ConcreteClass2
+FOO_ConcreteClass2
+]]>
+</screen>
+</example>
+
+<para>
+Codice vecchio che non ha classi definite dall'utente o funzioni dichiarate come
+'abstract' dovrebbe poter essere eseguito senza necessità di modifiche.
+</para>
+</sect1>
+
+<!-- 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:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
+