svn: /phpdoc/it/trunk/language/oop5/ abstract.xml

From: 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 +--> +

« previous php.doc.it (#952) next »