Pe langa atributele: "public", "private", "protected" si "internal"; prin care se defineste domeniul de acces al principalelor elemente dintr-o clasa: variabile (proprietati), constante si metode (functii); acestea pot fi create si ca statice, astfel, vor apartine exclusiv clasei, si nu pot fi apelate prin instanta de obiect a clasei, ci direct prin ea.
In continuare sunt prezentate pe rand modul cum se definesc proprietati, constante si metode ca fiind statice.
• Ca regula generala, se foloseste cuvantul static cand sunt create aceste elemente.

1. Variabile statice

In mod normal, variabilele definite intr-o clasa sunt asociate cu proprietati ce pot fi apelate prin instanta de obiect la acea clasa (daca au atributul "public"), dupa formula:
                instantaObiect.proprietate
Variabilele, sau proprietatile statice se creaza adaugand cuvantul static inaintea lui var, sintaxa fiind:
                atribut static var prop_statica:Tip = valoare;
Aceste proprietati nu pot fi apelate prin instanta de obiect deoarece nu apartin ei, ele apartin clasei si pot fi apelate cu formula:
                numeClasa.prop_statica


Iata un exemplu din care se intelege mai bine. In clasa urmatoare, denumita "elStatic" se definesc doua proprietati publice, a doua ca statica. - Daca nu stiti cum se creaza si se foloseste o clasa in Flash, studiati mai intai lectia OOP - Creare clase
package {
  // Definire clasa "elStatic"
  public class elStatic
  {
    // Definire proprietati
    public var prop1:String = 'marplo.net';
    public static var prop2:String = 'ActionScript';         // Variabila statica
  }
}
- In documentul Flash (salvat in acelasi director in care e si fisierul cu aceasta clasa, "elStatic.as") se adauga urmatorul cod:
// Creare instanta de obiect la clasa "elStatic"
var obj:elStatic = new elStatic();

// Se verifica apelarea proprietatilor
trace(obj.prop1);            // marplo.net
// trace(obj.prop2);            // Va cauza eroare

// Apelare 'prop2' direct din "elStatic"
trace(elStatic.prop2);       // ActionScript
- Apasati "Ctrl+Enter" ca sa vedeti rezultatul returnat in Output.
- Daca expresia "trace(obj.prop2);" nu ar fi scrisa ca documentatie (cu // inainte) ar genera eroare, "prop2" avand declaratia "static" nu e recunoscuta in instanta la clasa ("obj"), dar e recunoscuta ca apartinand clasei si poate fi apelata direct prin ea insasi (elStatic.prop2).
In interiorul codului clasei, variabila statica (aici "prop2") poate fi apelata normal, cu numele ei, sau cu formula "numeClasa.prop_statica" (dupa cum puteti vedea in exemplul de la capitolul 3 "Metode statice").

2. Constante statice

Constantele sunt variabile cu valoare fixa, care nu mai poate fi modificata, si se definesc cu instructiunea const.
La fel ca variabilele, constantele statice se creaza adaugand cuvantul static inaintea lui const.
- In script pot fi apelate doar cu expresia:
                numeClasa.CONSTANTA
- In interiorul clasei, constantele statice pot fi apelate direct cu numele lor sau cu formula de mai sus.


In urmatorul exemplu (continuare a celui de sus) sunt declarate 2 constante, ambele cu atribut "public", dar a doua e definita ca statica.
package {
  // Definire clasa "elStatic"
  public class elStatic
  {
    // Definire proprietati
    public var prop1:String = 'marplo.net';
    public static var prop2:String = 'ActionScript';         // Variabila statica

    // Definire constante
    public const TUTORIALE:String = 'web development';
    public static const SITE:String = 'marplo';            // Constanta statica
  }
}
- In documentul Flash se adauga urmatorul cod:
// Creare instanta de obiect la clasa "elStatic"
var obj2:elStatic = new elStatic();

// Se verifica apelarea constantelor
trace(obj2.TUTORIALE);            // web development
// trace(obj2.SITE);            // Genereaza eroare

// Apelare 'SITE' direct din "elStatic"
trace(elStatic.SITE);       // marplo
- Daca expresia "trace(obj2.SITE);" nu ar fi scrisa ca documentatie (cu // inainte) ar genera eroare, constanta "SITE" avand declaratia "static" nu e recunoscuta in instanta la clasa ("obj2"), dar e recunoscuta ca apartinand clasei si poate fi apelata direct prin ea (elStatic.SITE).

3. Metode statice

Similar cu proprietatile si constanele, metodele de asemenea pot fi definite ca statice, prin adaugarea cuvantului static inaintea instructiunii function.
Apelarea lor se face cu formula:
                numeClasa.metodaStatica(parametri)
- In codul metodelor statice se pot folosi doar proprietati si constante din clasa care si ele sunt statice (nici cuvanul this nu poate fi utilizat).


In exemplu urmator (continuare a celui precedent) se adauga o metoda statica (denumita "Cursuri"). Aceasta returneaza o variabila ('re') a carei valoare este data printr-o instructiune "switch" in functie de parametrul primit (vedeti si explicatiile din cod).
package {
  // Definire clasa "elStatic"
  public class elStatic
  {
    // Definire proprietati
    public var prop1:String = 'marplo.net';
    public static var prop2:String = 'ActionScript';         // Variabila statica

    // Definire constante
    public const TUTORIALE:String = 'web';
    public static const SITE:String = 'marplo';            // Constanta statica

    // Definire metoda
    public static function Cursuri(param:String):String
    {
      var re:String;          // Variabila care va fi returnata

      // Instructi "switch" in functie de valoarea constantelor
      switch(param)
      {
        case 'web':
          re = elStatic.prop2;        // "re" preia valoarea proprietatii statice "prop2"
          break;
        case 'marplo':
          re = SITE;        // "re" preia valoarea constantei statice "SITE" (se poate si elStatic.SITE )
          break;
        default: re = 'Fara valoare';
      }

      return re;            // Returneaza valoarea lui re
    }
  }
}
- metoda "Cursuri" fiind definita statica, poate folosi doar variabile si constante care si ele sunt statice. Daca, de exemplu, adaugati in corpul ei "re = this.prop1;" sau "re = TUTORIALE;" va returna eroare.
- In documentul Flash se adauga urmatorul cod:
var obj3:elStatic = new elStatic();
trace(elStatic.Cursuri(obj3.TUTORIALE));        // ActionScript
// trace(obj3.Cursuri(elStatic.SITE));        // Cauzeaza eroare

// Apelare metoda statica avand ca argument constanta statica
trace(elStatic.Cursuri(elStatic.SITE));        // marplo
- Daca expresia "trace(obj3.Cursuri(elStatic.SITE));" nu ar fi scrisa ca documentatie (cu // inainte) ar genera eroare, metoda "Cursuri" avand declaratia "static" nu e recunoscuta in instanta la clasa ("obj3"), dar e recunoscuta ca apartinand clasei si poate fi apelata direct prin ea (elStatic.Cursuri('arg')).

Fisierele FLA si AS cu exemplele din aceasta lectie pot fi descarcate de la: Clase si obiecte - elemente Statice

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag HTML5 este indicat sa contina meniul cu link-uri de navigare in site?
<section> <nav> <article>
<nav><ul>
 <li><a href="http://coursesweb.net/css/" title="CSS Course">CSS Course</a></li>
 <li><a href="http://www.marplo.net/jocuri/" title="Flash Games">Flash Games</a></li>
</ul></nav>
Ce proprietate CSS muta elementrul in dreapta sau stanga de la locul unde e?
text-align clear float
.some_class {
  width: 30%;
  float: left;
}
Clic pe metoda obiectului Math care rotunjeste numarul x descrescator la cel mai apropiat intreg.
Math.ceil(x) Math.abs(x) Math.floor(x)
var num = 12.34567;
num = Math.floor(num);
alert(num);       // 12
Indicati functia PHP care returneaza numarul de caractere dintr-un sir.
mb_strlen() count() stristr()
$str = "sir cu caractere utf-8 åèö";
$nrchr = mb_strlen($str);
echo $nrchr;        // 29
Clic pe raspunsul potrivit la intrebarea: "When it happened?".
On the 7th of July 1996 It is a quarter to 5. Nice weather.
When it happened? On the 8th of August 2001.
- Cand s-a intamplat? Pe 8 August 2001.
Indicati raspunsul potrivit la intrebarea: "¿Cuando sucedió?".
Hace buen tiempo. En el 8 de Agosto de 2001 Son las tres menos cuarto.
¿Cuando sucedió? En el 8 de Agosto de 2001.
- Cand s-a intamplat? Pe 8 August 2001.
Clase si Obiecte - Elemente statice

Last accessed pages

  1. Conditional IF in Limba Engleza - Fraze Conditionale (39931)
  2. Prezentul simplu si continuu - Present Tense Simple and Continuous (52156)
  3. Poezii pentru copii, in engleza (8573)
  4. Lucrul cu stiluri CSS (2771)
  5. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (55156)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3122)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2511)
  3. Gramatica limbii engleze - Prezentare Generala (2356)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (1960)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (1609)