Medii vizuale

  • View
    231

  • Download
    0

Embed Size (px)

Text of Medii vizuale

  • 7/27/2019 Medii vizuale

    1/50

    Lectia 1 Its more fun to compute

    Obiective: Cum demaram un proiect Visual Studio.NET

    Integrarea catorva componente intr-o aplicatie vizuala

    Completarea codului

    Mediul integrat Visual Studio .NET ofera o larga gama de ustensile ce permit crearea rapida de

    aplicatii. In aceasta lectie ne propunem sa prezentam pasii ce trebuie urmati in crearea unei aplicatii

    utilizand Visual Studio.NET.

    Imediat dupa lansarea Visual Studio.NET, putem demara crearea unui proiect (figura 1) si selectiona

    limbajul ales pentru implementarea aplicatiei (figurile 2,3,4).

    Figura 1- Deschiderea unui nou proiect Figura 2 Alegem Visual Basic...

    Figura 3 ...Visual C#... Figura 4 sau Visual J#?

    Avand in vedere ca Java este unul dintre limbajele cele mai raspandite in mediul academic, vom

    alege, si noi, sa implementam proiectele cursului de fata tot in Java, incurajand insa studentii sa

    incerce, macar prin analogie, crearea acelorasi proiecte si in limbajele Visual Basic si Visual C#.

  • 7/27/2019 Medii vizuale

    2/50

    Odata confirmat limbajul ales spre implementare, VS.NET afiseaza o interfata grafica (figura 5) in

    care programatorul nu trebuie decat sa depuna forme si controale vizuale pentru a realiza

    implementarea aplicatiei.

    Figura 5 Contextul vizual al aplicatiei... Figura 6 - ... si interfata cu tot ce trebuie.

    Pentru aceasta prima lectie ne propunem sa implementam, nu binecunoscutul Hello world!, ci un

    mic motor de calcul pentru determinarea lui n! (reamind ca =

    =ni

    in,1

    ! , pentru orice *Nn iar

    pentru 0=n , 1!=n prin conventie).

    Pentru a asigura interactivitatea aplicatiei cu utilizatorul, aceasta va trebui sa ceara, printr-un

    dialog vizual cu utilizatorul, o valoare numerica pozitiva, urmand ca apoi sa afiseze valoareacalculata.

    Deci vom avea nevoie de un text explicativ (Label), un loc (TextBox) in care sa specificamvaloarea lui n, un instrument (Button) care sa declanseze calculele si un al doilea loc (TextBox)in care afisam rezultatul calculelor.

    Plasarea tuturor acestor elemente in cadrul vizual oferit de VS.NET (Form1) este lasat la liberaalegere a programatorului; o solutie posibila este cea din figura 6. Proprietatile tuturor elementelor

    plasate in cadrul vizual pot fi inspectate/modificate prin intermediul ferestrei Properties(dreaptajos). Lista si semnificatia acestor componente este:

    label1(Label) textul explicativ,

    textBox1(TextBox) locul in care specificam numarul n, button1(Button) instrumentul care declanseaza calculele, si textBox2(TextBox) locul in care specificam rezultatele calculelor

    Pe masura ce avansam cu completarea cadrului vizual Form1, VS.NET genereaza si actualizeaza un

    fisier corespunzator, avand denumirea form1.jsl (sau form1.vb in cazul utilizarii Visual

    Basic, respectiv form1.csin cazul utilizarii Visual C#).

  • 7/27/2019 Medii vizuale

    3/50

    packageWindowsApplication3;

    importSystem.Drawing.*;importSystem.Collections.*;

    importSystem.ComponentModel.*;importSystem.Windows.Forms.*;importSystem.Data.*;

    /*** Summary description for Form1.*/

    publicclassForm1 extendsSystem.Windows.Forms.Form{

    privateSystem.Windows.Forms.Label label1;privateSystem.Windows.Forms.TextBox textBox1;

    privateSystem.Windows.Forms.Button button1;privateSystem.Windows.Forms.TextBox textBox2;

    /*** Required designer variable.*/

    privateSystem.ComponentModel.Container components = null;

    publicForm1(){

    //

    // Required for Windows Form Designer support//InitializeComponent();

    //// TODO: Add any constructor code after InitializeComponent call//

    }

    /*** Clean up any resources being used.

    */protectedvoidDispose(booleandisposing){

    if(disposing){

    if(components != null){

    components.Dispose();

  • 7/27/2019 Medii vizuale

    4/50

    }}super.Dispose(disposing);

    }

    #regionWindows Form Designer generated code/**

    * Required method for Designer support - do not modify* the contents of this method with the code editor.*/

    privatevoid InitializeComponent(){

    this.label1 = newSystem.Windows.Forms.Label();this.textBox1 = newSystem.Windows.Forms.TextBox();this.button1 = newSystem.Windows.Forms.Button();this.textBox2 = newSystem.Windows.Forms.TextBox();

    this.SuspendLayout();//// label1//this.label1.set_Location(newSystem.Drawing.Point(32, 16));this.label1.set_Name("label1");this.label1.set_Size(newSystem.Drawing.Size(128, 24));this.label1.set_TabIndex(0);this.label1.set_Text("Introduceti un numar:");

    //// textBox1

    //this.textBox1.set_Location(newSystem.Drawing.Point(152, 16));this.textBox1.set_Name("textBox1");this.textBox1.set_TabIndex(1);this.textBox1.set_Text("textBox1");

    //// button1//this.button1.set_Location(newSystem.Drawing.Point(32, 56));this.button1.set_Name("button1");this.button1.set_Size(newSystem.Drawing.Size(224, 23));

    this.button1.set_TabIndex(2);this.button1.set_Text("Calculeaza");//// textBox2//this.textBox2.set_Location(newSystem.Drawing.Point(32, 104));this.textBox2.set_Name("textBox2");this.textBox2.set_Size(newSystem.Drawing.Size(224, 20));

  • 7/27/2019 Medii vizuale

    5/50

    this.textBox2.set_TabIndex(3);this.textBox2.set_Text("textBox2");

    //// Form1//

    this.set_AutoScaleBaseSize(newSystem.Drawing.Size(5, 13));this.set_ClientSize(newSystem.Drawing.Size(292, 273));this.get_Controls().Add(this.textBox2);this.get_Controls().Add(this.button1);this.get_Controls().Add(this.textBox1);this.get_Controls().Add(this.label1);this.set_Name("Form1");this.set_Text("I\'ts more fun to compute");this.ResumeLayout(false);

    }

    #endregion

    /*** The main entry point for the application.*/

    /** @attribute System.STAThread() */publicstaticvoidmain(String[] args){

    Application.Run(newForm1());}

    }

    Rularea aplicatiei astfel obtinute conduce la afisarea contextului vizual Form1. Acesta permiteactionarea si interactiunea utilizatorului cu componentele formei fara insa a produce rezultatulscontat; calculul lui n! (figura 7).

    Figura 7 Aplicatia ... o carcasa fara continut Figura 8 Aplicatia ... un mic motor de n!

  • 7/27/2019 Medii vizuale

    6/50

    Este si normal sa fie asa deoarece in afara de functiunile vizuale implicit asigurate de catrecomponentele introduse, noi, ca programatori, nu am adaugat nici o semantica relativa la

    contextul problemei.

    De aceea, pentru a remedia situatia va trebui sa completam functional contextul vizual obtinut. In

    acest sens:

    introducem doi identificatori in cadrul contextului vizual:o numarretinand numarul introdus de catre utilizator si respectivo factorialpentru a retine rezultatul calculelor.

    privateintnumar, factorial;

    analizam intrarea utilizatorului prin tratarea evenimentului TextChanged asociat luitextBox1, si incarcam valoarea obtinuta in numar:

    privatevoidtextBox1_TextChanged (Object sender, System.EventArgs e){

    Integer in=Integer.valueOf(textBox1.get_Text());numar=in.intValue();

    }

    Pentru a accesa aceasta zona de cod putem fie sa efectuam dublu-click pe componenta in

    cauza (in cazul nostru pe textBox1), fie sa selectionam aceasta componenta si sainspectam/utilizam fereastra Propertiesasociata.

    declansam calculul factorialului, prin tratarea evenimentului Clickasociat butonului button1in cadrul caruia, in plus, actualizam textBox2cu valoarea nou obtinuta:

    privatevoidbutton1_Click (Object sender, System.EventArgs e){

    factorial=1;for(inti=1;i

  • 7/27/2019 Medii vizuale

    7/50

    /**

    * Summary description for Form1.*/

    publicclassForm1 extendsSystem.Windows.Forms.Form

    {privateSystem.Windows.Forms.Label label1;privateSystem.Windows.Forms.TextBox textBox1;privateSystem.Windows.Forms.Button button1;privateSystem.Windows.Forms.TextBox textBox2;

    privateintnumar, factorial;

    /*** Required designer variable.*/

    privateSystem.ComponentModel.Container components = null;

    publicForm1(){

    //// Required for Windows Form Designer support//InitializeComponent();

    //// TODO: Add any constructor code after InitializeComponent call

    //}

    /*** Clean up any resources being used.*/

    protectedvoidDispose(booleandisposing){

    if(disposing){

    if(components != null)

    { components.Dispose();}

    }super.Dispose(disposing);

    }

    #regionWindows Form Designer generated code

  • 7/27/2019 Medii vizuale

    8/50

    /*** Required method for Designer support - do not modify* the contents of this method with the code editor.*/

    privatevoid InitializeComponent()

    {this.label1 = newSystem.Windows.Forms.Label();this.textBox1 = newSystem.Windows.Forms.TextBox();this.button1 = newSystem.Windows.Forms.Button();this.textBox2 = newSystem.Windows.Forms.TextBox();this.SuspendLayout();

    //// label1//this.label1.set_Location(newSystem.Drawing.Point(32, 16));this.label1.set_Name("label1");

    this.label1.set_Size(newSystem.Drawing.Size(128, 24));this.label1.set_TabIndex(0);this.label1.set_Text("Introduceti un numar:");

    //// textBox1//this.textBox1.set_Location(newSystem.Drawing.Point(152, 16));this.textBox1.set_Name("textBox1");this.textBox1.set_TabIndex(1);this.textBox1.set_Text("textBox1");this.textBox1.add_TextChanged(

    new System.EventHandler(this.textBox1_TextChanged));//// button1//this.button1.set_Location(newSystem.Drawing.Point(32, 56));this.button1.set_Name("button1");this.button1.set_Size(newSystem.Drawing.Size(224, 23));this.button1.set_TabIndex(2);this.button1.set_Text("Calculeaza");this.button1.add_Click( newSystem.EventHandler(this.button1_Click)