Metoda collect() din Stream are două forme: <R,A> R collect(collector<? super T,A,R> collector) <R> R collect(supplier<r> supplier, BiConsumer<R,?

Size: px
Start display at page:

Download "Metoda collect() din Stream are două forme: <R,A> R collect(collector<? super T,A,R> collector) <R> R collect(supplier<r> supplier, BiConsumer<R,?"

Transcription

1 Colectori Prin colectori se pot executa diverse procesări terminale asupra elementelor din obiecte Stream, precum: grupări, sumarizări, selecții, agregări etc. Outputul obișnuit este o colecție rezultată prin selecție sau agregare dar și o valoare rezultată prin sumarizare sau alte tipuri de operațiuni Colectarea se realizează prin invocarea metodelor collect() ale interfeței Stream Un collector este un obiect de tip Collector<T,A,R> public interface Collector<T,A,R> unde: T - este tipul elementelor colectate A - este tipul operațiunii de acumulare aplicate asupra elementelor colectate R - este tipul rezultatului operațiunii de acumulare

2 Metoda collect() din Stream are două forme: <R,A> R collect(collector<? super T,A,R> collector) <R> R collect(supplier<r> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner) În componența unui colector este obligatorie prezența a trei elemente: inițializator sau supplier - crează structura asociată colectorului acumulator - actualizează structura asociată colectorului selector sau combiner - efectează operațiuni asupra structurii asociate colectorului în vederea obținerii rezultatului final În mod opțional colectorul poate să aibă un finalizator care este o funcție aplicată asupra rezultatului selecției (combiner) pentru a obține rezultatul final. Dacă nu este furnizat în mod explicit se consideră finalizator funcția identitate cea care nu modifică outputul combinerului. Structura colectorului este reflectată de metodele abstracte ale interfeței Collector

3 Metodele intefeței Collector Supplier<A> supplier(); //Întoarce un obiect Supplier de tip A. Interfața funcțională Supplier are o funcție get() prin care se întoarce un obiect A (tipul Supplier). BiConsumer<A,T> accumulator(); //Întoarce un obiect BiConsumer. Interfața funcțională are o metodă void accept(a t, T u) prin care este implementat "consumul" obiectului de tip T. BinaryOperator<A> combiner(); // Întoarce un obiect BinaryOperator. Înterfața BinaryOperator are metoda funcțională A apply(a t, A u) care întoarce rezultatul aplicării colectorului Function<A,R> finisher(); // Întoarce un finalizator de tip Function al colectorului. Metoda funcțională furnizează rezultatul colectorului: R apply(a t) Set<Collector.Characteristics> characteristics(); //Furnizează caracteristicile colectorului sub formă de Set. Acestea pot fi constante din enumerarea Collector.Characteristics, pecum: CONCURRENT (colectarea in regim concurențial), UNORDERED (in colectare nu contează ordinea) sau IDENTITY_FINISH (funcția de finalizare este ignorată, combiner-ul este cel care furnizează rezultatul colectării).

4 Exemplu creare și utilizare colector personalizat Fie clasele Persoana și Student astfel definite: public class Persoana { private String nume; private long cnp;... } public class Student extends Persoana { private int grupa,anul; private Map<String,Integer> note=new HashMap<>();... } Să se creeze lista cu cnp-urile studenților pornind de la lista de studenți. Va fi invocată metoda collect() din Stream în forma: <R,A> R collect(collector<? super T,A,R> collector); În codul de mai jos lista este un obiect ArrayList<Student> cu lista studenților.

5 List<Long> cnp = lista.stream().map(student::getcnp).collect( new Collector<Long, List<Long>, List<Long>>() { public Supplier<List<Long>> supplier() { Supplier<List<Long>> s = () -> new ArrayList<>(); return s; } public BiConsumer<List<Long>, Long> accumulator() { BiConsumer<List<Long>, Long> bc = (lst, val) -> { lst.add(val); }; return bc; } public BinaryOperator<List<Long>> combiner() { BinaryOperator<List<Long>> bo = (t, u) -> { u.addall(t); return u; }; return bo; } public Function<List<Long>, List<Long>> finisher() { Function<List<Long>,List<Long>> f = (List<Long> t) -> t; return f; } public Set<Collector.Characteristics> characteristics() { Set<Collector.Characteristics> ch = new HashSet<>(); ch.add(characteristics.unordered);ch.add(characteristics.concurrent); return ch; } });

6 Același rezultat se poate obține prin invocarea celei de a doua forme a metodei collect(). Pe exemplul precedent, în codul de mai jos sunt prezentate colectările pentru grupele și anii distincți din care fac parte studenții din listă: List<Integer> ani=lista.stream().map(student::getanul).distinct(). collect( () -> new ArrayList<>(), (t,u) -> {t.add(u);}, (t,u) -> { u.addall(t);}); List<Integer> grupe = lista.stream().map(student::getgrupa).distinct().collect(arraylist::new, ArrayList::add, ArrayList::addAll); Finalizatorul va fi implicit funcția identitate Caracteristicile colectorului vor fi CONCURRENT și UNORDERED În prima variantă metodele funcționale sunt pasate prin funcții lambda În varianta a doua metodele funcționale sunt pasate prin operatorul de referențiere

7 Colectori standard Sunt creați prin metode statice ale clasei utilitare Collectors în contextul efectuării a diverse operațiuni de colectare Colectarea în colecții standard: public static <T> Collector<T,?,List<T>> tolist(); public static <T,C extends Collection<T>> Collector<T,?,C> tocollection(supplier<c> collectionfactory); public static <T> Collector<T,?,Set<T>> toset(); public static <T,K,U,M extends Map<K,U>> Collector<T,?,M> tomap( Function<? super T,? extends K> keymapper, Function<? super T,? extends U> valuemapper) unde keymapper este o funcție care furnizează cheile iar valuemapper o funcție care furnizează valorile. Această formă a metodei tomap presupune inexistența cheilor duplicat. Exemplu. Colectarea numelor studenților din lista de studenți: List<String> nume = lista.stream().map(student::getnume).collect(collectors.tolist());

8 Exemplu. Colectarea numelor studenților după cnp (structură Map): Map<Long,String> nume = lista.stream().collect(collectors.tomap(student::getcnp, Student::getNume)); public static <T,K,U,M extends Map<K,U>> Collector<T,?,M> tomap( Function<? super T,? extends K> keymapper, Function<? super T,? extends U> valuemapper, BinaryOperator<U> mergefunction); mergefunction este o funcție care indică modul de tratare a valorilor avute pentru cheile duplicat Exemplu. Listarea studenților pe grupe: Map<Integer,String> grupe = lista.stream().collect(collectors.tomap( Student::getGrupa, Student::getNume, (nume1,nume2)->nume1+","+nume2)); A treia formă a metodei tomap() include un ultim parametru inițializator (supplier) pentru a inițializa obiectul Map rezultat într-o manieră explicită.

9 Sumarizări public static <T> Collector<T,?,Double> summingdouble(todoublefunction<? super T> mapper); // Sumă de dip double. Idem pentru long și int. public static <T> Collector<T,?,Double> averagingdouble(todoublefunction<? super T> mapper); //Medie de tip double. Idem pentru long și int. public static <T> Collector<T,?,Long> counting(); //Contorizare public static <T> Collector<T,?,Optional<T>> minby(comparator<? super T> comparator); // Minim public static <T> Collector<T,?,Optional<T>> maxby(comparator<? super T> comparator); //Maxim Exemple. Calcul medie generală și media maximă pe lista de studenți double mediagenerala = lista.stream().collect( Collectors.averagingDouble(stud -> stud.calculmedie())); Student studmax = lista.stream().collect(collectors.maxby((stud1,stud2)-> (stud1.calculmedie()>stud2.calculmedie())?1:-1 )).get();

10 Grupări și sumarizări public static <T,K> Collector<T,?,Map<K,List<T>>> groupingby(function<? super T,? extends K> classifier); // Grupare după funcția de clasificare specificată Exemplu. Gruparea studenților după grupa din care fac parte Map<Integer,List<Student>> grupe = lista.stream().collect(collectors.groupingby(student::getgrupa)); public static <T,K,A,D> Collector<T,?,Map<K,D>> groupingby(function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream); //Grupare cu sumarizare conform colectorului downstream Exemplul 1. Contorizarea numărului de studenți pe grupe Map<Integer,Long> grupe = lista.stream().collect(collectors.groupingby( Student::getGrupa,Collectors.counting())); Exemplul 2. Calculul mediei studenților pe grupe Map<Integer,Double> grupe = lista.stream().collect(collectors.groupingby( Student::getGrupa, Collectors.averagingDouble(Student::calculMedie))); unde Student::calculMedie este referențierea la metoda de instanță calculmedie() din clasa Student

11 Partiționarea. Este un caz particular al grupării. Împărțirea se face în două grupe identificate prin cheile true și false public static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningby(predicate<? super T> predicate); //Colectare (partiționare) într-o colecție Map cu două chei - true, false - după predicatul specificat Exemplu. Partiționarea listei de studenți în promovați și nepromovați în funcție de note Map<Boolean,List<Student>> promovabilitate = lista.stream().collect(collectors.partitioningby( stud -> stud.getnote().values().stream().allmatch((nota) -> (nota>=5)))); Partiționare cu sumarizare public static <T,D,A> Collector<T,?,Map<Boolean,D>> partitioningby(predicate<? super T> predicate, Collector<? super T,A,D> downstream); // Colectorul downstream este folosit pentru sumarizare Exemplu. Contorizare studenti promovați și nepromovați Map<Boolean,Long> promovabilitate = lista.stream().collect(collectors.partitioningby( stud -> stud.getnote().values().stream().allmatch((nota) -> (nota>=5)), Collectors.counting()));

12 Java Reflection Este o tehnologie care permite obținerea de informații despre clase, interfețe, câmpuri si metode la momentul execuției Este utila in aplicații precum cele care asigura persistenta obiectelor, maparea obiectual-relationala etc. Inspectarea claselor Obtinerea obiectului Class asociat Class myobjectclass = MyObjectClass.class; // se foloseste identificatorul de clasa public static Class<?> forname(string classname) throws ClassNotFoundException; // se folosește numele String al clasei public final Class<?> getclass(); // se folosește referința la obiect

13 Obtinere modificatori int modifiers = aclass.getmodifiers(); // codificarea pentru modificator se face la nivel de bit in intregul returnat Investigare modificator prin metode statice ale clasei Modifier: public static boolean istip(int mod);// in functie de Tip se va testa bitul corespunzator Modifier.isAbstract(int modifiers); Modifier.isFinal(int modifiers); Modifier.isInterface(int modifiers); Modifier.isNative(int modifiers); Modifier.isPrivate(int modifiers); Modifier.isProtected(int modifiers); Modifier.isPublic(int modifiers); Modifier.isStatic(int modifiers); Modifier.isSynchronized(int modifiers); Modifier.isTransient(int modifiers); Modifier.isVolatile(int modifiers); Modifier.toString(int modifiers); // intoarce intr-un String toti modificatorii

14 Obtinere pachet: Package package = aclass.getpackage(); Obtinere superclasa: Class superclass = aclass.getsuperclass(); Obtinere interfete implementate: Class[] interfaces = aclass.getinterfaces(); // întoarce doar interfețele implementate direct

15 Java Reflection - constructori Obtinere constructori: Constructor[] constructors = aclass.getconstructors(); // constructorii publici Constructor[] constructors=aclass.getdeclaredconstructors(); // toți constructorii Constructor constructor = aclass.getconstructor(new Class[]{Tip1.class,..., TipN.class}); // obținerea constructorului cu semnătura specificata Determinare parametrii constructor: Class[] parametertypes = constructor.getparametertypes(); Invocare constructor: public T newinstance(object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException

16 Java Reflection - campuri Obtinere campuri: Field[] fields= aclass.getfields(); // câmpurile publice ale clasei, inclusiv cele moștenite Field[] fields= aclass.getdeclaredfields(); // toate câmpurile, mai puțin cele moștenite public Field getfield(string name) throws NoSuchFieldException, SecurityException; // câmpul public cu numele specificat Caracteristici obținute prin metode al clasei Field: public String getname(); public int getmodifiers(); public Class<?> gettype(); public Type getgenerictype(); // include informații si pentru tipurile parametrizate

17 Java Reflection - campuri Initializare/consultare campuri prin metode Field: public Object get(object objinstance) throws IllegalArgumentException, IllegalAccessException; // întoarce valoarea câmpului pentru instanța objinstance public tip gettip(object objinstance) throws IllegalArgumentException, IllegalAccessException; // idem. Valoarea trebuie sa fie convertibila la tip. Se aplica pentru primitive public void set(object objinstance, Object value) throws IllegalArgumentException, IllegalAccessException public void settip(object objinstance, tip s) throws IllegalArgumentException, IllegalAccessException

18 Java Reflection - metode Obtinere metode: Method[] method = aclass.getmethods(); // Toate metodele publice, inclusiv cele din superclase si/sau superinterfete Method[] method = aclass.getdeclaredmethods(); // Toate metodele clasei curente public Method getmethod(string name, Class<?>... parametertypes) throws NoSuchMethodException, SecurityException; // metoda cu numele si tipurile parametrilor specificați Caracteristici furnizate prin metode ale clasei Method: public Class<?>[] getparametertypes(); public Type[] getgenericparametertypes(); public Class<?>[] getexceptiontypes(); public Class<?> getreturntype();

19 Java Reflection - metode Invocarea metodelor public Object invoke(object objinstance, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException; // Daca metoda este static objinstance poate fi null... Method method1 = myobject.class.getmethod("astaticmethod", String.class); Object returnvalue1 = method.invoke(null, "parameter-value1"); Method method2 = myobject.class.getmethod("aninstancemethod", String.class); Object returnvalue2 = method.invoke(myobject, "parameter-value2");

20 Java API - Introspector Este o clasa utilitara care pune la dispozitie un instrument de inspectare a claselor bean (proprietati, metode, evenimente). public class Introspector extends Object; Informatiile sunt furnizate prin intermediul obiectelor BeanInfo. Obtinere BeanInfo prin metoda statica getbeaninfo a clasei Introspector: public static BeanInfo getbeaninfo(class<?> beanclass) throws IntrospectionException; Investigare continut prin metode ale clasei BeanInfo: PropertyDescriptor[] getpropertydescriptors(); MethodDescriptor[] getmethoddescriptors(); EventSetDescriptor[] geteventsetdescriptors();

21 Clasele Descriptor public class FeatureDescriptor extends Object; // clasa radacina utilizata pentru obtinerea unor informatii commune despre proprietati, metode si evenimente in cadrul unui bean Metode: public String getname(); // numele programmatic al proprietatii public void setname(string name); Descriptor pentru proprietati public class PropertyDescriptor extends FeatureDescriptor; // descrierea proprietatilor Constructori: public PropertyDescriptor(String propertyname, Class<?> beanclass) throws IntrospectionException; // este conditionat de conventia set-get-is public PropertyDescriptor(String propertyname, Class<?> beanclass, String readmethodname, String writemethodname) throws IntrospectionException; // pentru scriere/citire se poate trece null

22 Metode: public Class<?> getpropertytype(); // tipul proprietatii public Method getreadmethod(); // intoarce metoda read public void setreadmethod(method readmethod) throws IntrospectionException; // stabileste metoda read public Method getwritemethod(); // metoda write public void setwritemethod(method writemethod) throws IntrospectionException; Descriptor pentru metode public class MethodDescriptor extends FeatureDescriptor; Metode: public Method getmethod(); public ParameterDescriptor[] getparameterdescriptors();

23 Descriptor pentru evenimente public class EventSetDescriptor extends FeatureDescriptor; Metode: public Class<?> getlistenertype(); public Method getaddlistenermethod(); public Method getremovelistenermethod();

24 Adnotari Adnotarile ofera informatii care nu sunt parte a logicii aplicatiei Au urmatoarele utilizari: Informatii pentru compilare. = "unchecked") Procesari specifice in timpul compilarii si deployment-ului Procesari specifice in executie

25 [(numeproprietate="valoareprorietate")... ] @SuppressWarnings parametrii: public abstract String[] value; "deprecation"})

26 Adnotari standard applicate altor - arata la ce moment este tratata adnotarea parametrii: public abstract RetentionPolicy value; // Unde RetentionPolicy sunt: RetentionPolicy.SOURCE Se adreseaza codului sursa fiind ignorata de compilator RetentionPolicy.CLASS Se adreseaza compilatorului si este tratata la momentul compilarii (optiune default) RetentionPolicy.RUNTIME Se adreseaza JVM si este tratata la momentul - arata carei entitati i se adreseaza adnotarea parametrii: public abstract ElementType[] value; // ElementType este o enumerare valori posibile:

27 ElementType.ANNOTATION_TYPE - se adreseaza altei adnotari ElementType.CONSTRUCTOR - constructorului ElementType.FIELD - campului ElementType.LOCAL_VARIABLE - variabilei locale ElementType.METHOD - metodei ElementType.PACKAGE - pachetului ElementType.PARAMETER- parametrilor unei metode ElementType.TYPE - oricarui element dintr-o - Indica faptul ca o adnotare este automat mostenita.

28 Crearea adnotarilor proprii Sunt create dupa reguli asemanatoare claselor si interfetelor, in fisiere sursa cu numele adnotarii Sintaxa: [numeadnotare] { [tip nume() default valoare;]... }

29 Accesul la adnotari in timpul executiei Accesul la adnotari in timpul executiei este realizat prin implementarea interfetei AnnotatedElement Metode ale interfetei AnnotatedElement: public Annotation[] getannotations(); // intoarce toate adnotarile prezente la elementul curent public Annotation[] getdeclaredannotations(); // întoarce doar adnotarile prezente direct la elementul current public <A extends Annotation> A getannotation(class<a> annotationclass); //intoarece adnotarea specificata daca aceasta este prezenta public <A extends Annotation> A getdeclaredannotation(class<a> annotationclass); // Idem dar pentru adnotare direct prezenta O adnotare este direct prezenta la un element daca elementul contine acea adnotare. O adnotare este prezenta la un element daca este direct prezenta sau daca este direct prezenta la o superclasa si este de tip inheritable. Clase care implementeaza AnnotatedElement: Class, Constructor, Executable, Field, Method, Package, Parameter

30 Java Beans JB tehnologie utilizată pentru construirea de componente reutilizabile, autonome, independente de platformă şi asamblabile Caracteristici Persistenţa. Prin mecanismul de serializare se asigură salvarea stării unui obiect bean şi restaurarea sa Comunicarea prin evenimente. Se utilizează mecanismul sursă-ascultător pentru a comunica intre două obiecte bean Reflexia (introspecţia). Se utilizează mecanismul Java-Reflection pentru a afla informaţii despre obiecte la momentul execuţiei Reguli de denominare Constructor public fără parametrii Definire de proprietăţi Metode publice normalizate de acces utilizând prefixe: set, get, is

31 Proprietăţi Sunt date (primitive sau obiecte) care dau starea unui obiect bean. Tipuri de proprietăţi: Proprietăţi simple Proprietăţi indexate Proprietăţi legate Proprietăţi cu constrângeri Proprietățile simple sunt atribute care au asociate metode set, get, is. private <tip> <nume>;... public void set<nume>(<tip> val); public <tip> get<nume>(); Metodele set nu sunt obligatorii. Pentru atributele boolean accesul se face si prin: public boolean is<nume>();

32 Proprietatile indexate corespund atributelor de tip masiv: private <tip>[] nume;... public <tip>[] get<nume>(); public void set<nume>(<tip>[] val); public <tip> get<nume>(int index); public void set<nume>(int index, <tip> val); Proprietatile legate sunt proprietati care genereaza un eveniment la schimbarea valorilor lor. Aceste evenimente pot fi interceptate de obiecte din clase speciale - ascultatori. Implementare eveniment: public class PropertyChangeEvent extends EventObject; Constructor: public PropertyChangeEvent(Object source, String propertyname, Object oldvalue, Object newvalue); // source - obiectul care contine proprietatea pentru care se face notificarea (ii se schimba valoarea), propertyname - numele proprietatii, oldvalue, newvalue - valoriile veche si noua

33 Metode ale clasei: public Object getoldvalue(); public Object getnewvalue(); public String getpropertyname(); Sursa evenimentelor PropertyChangeEvent o constituie obiectele care contin proprietatile legate. Un astfel de obiect trebuie sa aiba metode care sa permita inregistrarea/stergerea de ascultatori pentru evenimentele PropertyChangeEvent generate. Crearea ascultatorilor se face prin interfata : public interface PropertyChangeListener extends EventListener; Metoda abstracta: void propertychange(propertychangeevent evt) ; // Metoda prin care se implementeaza actiunea executata la interceptarea evenimentului evt (schimbarea valorii proprietatii)

34 Mecanismul de notificare In plus fata de simpla inregistrare a ascultatorilor, un obiect cu proprietati legate trebuie sa furnizeze un mecanism pentru crearea efectiva a ascultatorilor si notificarea lor la crearea de evenimente. Notificarea consta in generarea unui obiect-eveniment de tip PropertyChangeEvent, care va fi tratat de ascultator prin metoda propertychange. Acest mecanism este implementat de clasa: public class PropertyChangeSupport extends Object implements Serializable; Constructor: public PropertyChangeSupport(Object sourcebean); // se specifica beanul asociat - cel pentru care se efectueaza suportul Metode de notificare: public void firepropertychange(string propertyname, Object oldvalue, Object newvalue); //raporteaza schimbarea unei proprietati public void fireindexedpropertychange(string propertyname, int index, Object oldvalue, Object newvalue); //idem pentru o proprietate indexata

35 Metode de inregistrare/stergere a ascultatorilor de catre suport (metode ale clasei PrpertyChangeSuport): public void addpropertychangelistener(propertychangelistener listener); // Adaugare ascultator pentru modificarea proprietatilor public void removepropertychangelistener(propertychangelistener listener); // Stergere ascultator

36 Proprietati cu constrangeri Prin mecanismul de constrangere, modificarea valorilor unor proprietati poate fi impiedicata de terte obiecte, printr-un fel de "veto". Din punct de vedere tehnic, mecanismul este asemanator celui de notificare: - sunt inregistrati ascultatori de veto; - se face notificare de veto si se arunca o exceptie de tip PropertyVetoException; - suportul este asigurat de clasa: public class VetoableChangeSupport extends Object implements Serializable; Constructor public VetoableChangeSupport(Object sourcebean); // sourcebean este obiectul care contine proprietatea

37 Metode de inregistrare a ascultatorilor (ale clasei VetoableChangeSupport): public void addvetoablechangelistener(vetoablechangelistener listener); public void removevetoablechangelistener(vetoablechangelistener listener); Metoda de notificare veto: public void firevetoablechange(string propertyname, Object oldvalue, Object newvalue) throws PropertyVetoException; Crearea ascultătorilor se face prin implementarea interfeței: public interface VetoableChangeListener extends EventListener; Metodă abstractă; void vetoablechange(propertychangeevent evt) throws PropertyVetoException;

38 Excepțiile aruncate la notificare sunt din clasa: public class PropertyVetoException extends Exception; Constructor: public PropertyVetoException(String mess, PropertyChangeEvent evt);

39 Documentarea aplicațiilor - Javadoc Crearea unei documentații pe baza comentariior inserate în codul sursă Comentariile sunt inserate în manieră standardizată Are avantajul de a păstra în același loc documentația și codul Pot fi documentate pachete, clase, constructori, câmpuri, și metode

40 Definire documentație Comentariile de bază sunt inserate în structura /** */ respectând câteva reguli: blocul de comentarii începe cu /** și se termină cu */ ; liniile din comentarii încep cu *; caracterele blank (spațiu, tab, \n) de la începutul liniilor sunt ignorate in comentarii pot fi inserate tag-uri HTML Taguri pentru attribute speciale asociate name - este asociat claselor sau major.minor.patch - asociat claselor și name description - asociat description - asociat Throwable description - asociat explanation - asociat package.class#member label - asociat tuturor nivelurilor

Tehnici avansate de programare

Tehnici avansate de programare Tehnici avansate de programare Curs - Cristian Frăsinaru acf@infoiasi.ro Facultatea de Informatică Universitatea Al. I. Cuza Iaşi Adnotarea elementelor Tehnici avansate de programare p.1/1 Cuprins Ce sunt

More information

Laborator 8 Java Crearea claselor de obiecte. Variabilele (campurile) clasei de obiecte

Laborator 8 Java Crearea claselor de obiecte. Variabilele (campurile) clasei de obiecte Laborator 8 Java Crearea claselor de obiecte. Variabilele (campurile) clasei de obiecte Probleme rezolvate: Scrieti, compilati si rulati toate exemplele din acest laborator: 1. Programul urmator (LotoConstante.java)

More information

Utilizarea formularelor in HTML

Utilizarea formularelor in HTML Utilizarea formularelor in HTML Formulare Un formular este constituit din elemente speciale, denumite elemente de control (controls), cum ar fi butoane radio, butoane de validare, câmpuri text, butoane

More information

Ingineria Sistemelor de Programare

Ingineria Sistemelor de Programare Ingineria Sistemelor de Programare Interfete grafice (Swing) mihai.hulea@aut.utcluj.ro 2017 Scurt istoric AWT: Abstract Windowing Toolkit import java.awt.* Swing Java FX Swing Demo Libraria Swing Swing

More information

Error! Bookmark not defined.

Error! Bookmark not defined. SEMINAR 06 CONTENTS Enuntul Problemei... 1 Repository... 2 Memory... 2 XML... 3 GUI... 4 Forma Selectie... 4 Forma Programator... 5 Forma Tester... 6 Java... 7 Mecanismul de Transmitere al Evenimentelor

More information

Ingineria Sistemelor de Programare. UML Diagrama Cazurilor de Utilizare 2016

Ingineria Sistemelor de Programare. UML Diagrama Cazurilor de Utilizare 2016 Ingineria Sistemelor de Programare UML Diagrama Cazurilor de Utilizare mihai.hulea@aut.utcluj.ro 2016 Introducere UML UML UML = Unified Modeling Language Dezvoltat in cadrul Object Management Group In

More information

Laborator 5 Instrucțiunile repetitive

Laborator 5 Instrucțiunile repetitive Laborator 5 Instrucțiunile repetitive Instrucțiunea for Instrucțiunea for permite repetarea unei secvențe de instrucțiuni atâta timp cât o condiție este îndeplinita. În plus, oferă posibilitatea execuției

More information

Proiectarea Rețelelor 32. Controlul modelelor de trafic in retea prin alterarea atributelor BGP

Proiectarea Rețelelor 32. Controlul modelelor de trafic in retea prin alterarea atributelor BGP Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiectarea Rețelelor 32. Controlul modelelor de trafic in retea prin alterarea atributelor BGP De ce ebgp? De ce ibgp?

More information

Bibliografie. * * *, Java Development Kit ndex.html

Bibliografie. * * *, Java Development Kit  ndex.html Bibliografie * * *, Java Development Kit http://www.oracle.com/technetwork/java/javase/downloads/i ndex.html Java programming: from problem analysis la program design, D.S. Malik, 2010 Java de la 0 la

More information

Rezolvare fişă de laborator Java Iniţiere în limbajul Java

Rezolvare fişă de laborator Java Iniţiere în limbajul Java Rezolvare fişă de laborator Java Iniţiere în limbajul Java Ex 1: Scrie următorul program Java folosind JCreator apoi încercă să-l înţelegi. public class primulprg System.out.println("Acesta este primul

More information

Serializarea. Transformarea datelor în secvenţe de octeţi astfel încât să poată fi transmise pe un flux de ieşire. Deserializare - procesul invers

Serializarea. Transformarea datelor în secvenţe de octeţi astfel încât să poată fi transmise pe un flux de ieşire. Deserializare - procesul invers Serializarea Transformarea datelor în secvenţe de octeţi astfel încât să poată fi transmise pe un flux de ieşire Deserializare - procesul invers Scopul serializării transmiterea datelor la distanţă. RMI

More information

Fişiere in C++ Un fişier este o colecţie de date indicat printr-un nume şi o extensie. Numele este desparţit de extensie prin punct.

Fişiere in C++ Un fişier este o colecţie de date indicat printr-un nume şi o extensie. Numele este desparţit de extensie prin punct. Fişiere in C++ Un fişier este o colecţie de date indicat printr-un nume şi o extensie. Numele este desparţit de extensie prin punct. Avantajul lucrului cu fisiere este evident, datele rezultate în urma

More information

Introducere in Maven. Information Type: Working Standard, Disclosure Range:, Information Owner: mihai.hulea, NTT DATA Romania

Introducere in Maven. Information Type: Working Standard, Disclosure Range:, Information Owner: mihai.hulea, NTT DATA Romania Introducere in Maven Build management tools Java build tools: Maven Gradle Ant + Ivy Build tools are programs that automate the creation of executable applications from source code. Building incorporates

More information

Laborator 10. SGBD-ul MySQL (partea I)

Laborator 10. SGBD-ul MySQL (partea I) Laborator 10 SGBD-ul MySQL (partea I) 1. Introduceţi următoarea secvenţă PHP: $dbh = mysql_connect("localhost", "Costica", "mypass") or die("unable to connect to MySQL"); $selectdb = mysql_select_db('lucrudb');

More information

Programare Orientată pe Obiecte în limbajul Java

Programare Orientată pe Obiecte în limbajul Java Curs 4 Programare Orientată pe Obiecte în limbajul Java Programare Orientată pe Obiecte Cuprins Tipul enumerare Clase imbricate Clase şi metode abstracte Excepţii Tipuri de date enumerare enum public class

More information

1. Să se determine de câte ori apare cifra c în scrierea în baza p a numărului n.

1. Să se determine de câte ori apare cifra c în scrierea în baza p a numărului n. Observatii: Codul de mai jos a fost realizat si testat pe pagina online: https://www.tutorialspoint.com/compile_pascal_online.php 1. Să se determine de câte ori apare cifra c în scrierea în baza p a numărului

More information

Laborator 4 Java Colectii

Laborator 4 Java Colectii Laborator 4 Java Colectii Scrieti, compilati si rulati toate exemplele din acest laborator: 1. Urmatorul exemplu foloseste diferite clase de colectii si adauga cate un element in aceste colectii import

More information

Programare avansată Tipuri generice Colecții de date

Programare avansată Tipuri generice Colecții de date Programare avansată Tipuri generice Colecții de date Problema Construiți o structură de date: o stivă de date, o listă înlănțuită, un vector, un graf, un arbore, etc. Care este tipul de date pe care îl

More information

The Reuse of the Components on the Java 2 Enterprise Edition Platform

The Reuse of the Components on the Java 2 Enterprise Edition Platform 140 The Reuse of the Components on the Java 2 Enterprise Edition Platform Lect.dr. Marian CRISTESCU Catedra de Informatică Economică, Universitatea "Lucian Blaga" Sibiu Reusable components are simply pre-built

More information

Dynamic binding vs static binding. Programare Orientată pe Obiecte

Dynamic binding vs static binding. Programare Orientată pe Obiecte Dynamic binding vs static binding Programare Orientată pe Obiecte Ce va afişa următorul program? class TestEgal{ public boolean equals ( TestEgal other ) { System.out.println( "In equals din TestEgal"

More information

Alocarea memoriei în C sub Linux

Alocarea memoriei în C sub Linux Costel Aldea Alocarea memoriei în C sub Linux Sunt trei funcţii C standard care se pot folosi pentru a aloca memorie: malloc(), calloc(), si realloc(). Prototipurile lor, după cum sunt definite în stdlib.h:

More information

Proprietati CSS pentru margini - BORDER

Proprietati CSS pentru margini - BORDER Proprietati CSS pentru margini - BORDER Property Values Description border border-bottom border-width border-bottom-width O proprietate pentru setarea celor 3 proprietati intr-o singura linie O proprietate

More information

Laborator 2 - Introducere in limbajul Java.Pachete.Interfete.Tratarea exceptiilor. Pachete

Laborator 2 - Introducere in limbajul Java.Pachete.Interfete.Tratarea exceptiilor. Pachete Laborator 2 - Introducere in limbajul Java.Pachete.Interfete.Tratarea exceptiilor. 1. Pachete 2. Interfete 3. Tratarea exceptiilor Pachete Crearea unui pachet Folosirea membrilor unui pachet Importul unei

More information

Structura JavaFX modelul FXML vizualizarea JavaFX API logica aplicației Controller

Structura JavaFX modelul FXML vizualizarea JavaFX API logica aplicației Controller JavaFX Structura JavaFX JavaFX este o colecție de clase si interfețe care asigura suport pentru dezvoltarea de interfețe grafice, aplicații de grafica interactiva si multimedia JavaFX este dezvoltata după

More information

Birotică Profesională. Cursul 12

Birotică Profesională. Cursul 12 Birotică Profesională Cursul 12 Sumar Visual Basic for Applications (VBA) Tipuri de date Structuri de control Funcţii si proceduri Obiecte si colecţii VBA Mediu de programare destinat in special realizării

More information

Quartz. ArcGIS Runtime SDK for Android

Quartz. ArcGIS Runtime SDK for Android Quartz ArcGIS Runtime SDK for Android Quartz (beta) Ce ofera? Utilizarea OpenGL controale si functionalitati de performanta inalta; utilizarea de Vector Tile Package utilizarea Map Package; biblioteci

More information

Atribute si interfete Facultatea de Informatica Iasi Universitatea Al I. Cuza Iasi Introspectie metadata Reflection. Atribute. Interfete.

Atribute si interfete Facultatea de Informatica Iasi Universitatea Al I. Cuza Iasi Introspectie metadata Reflection. Atribute. Interfete. Curs 3 1 Cuprins Introspectie metadata Reflection. Atribute. Interfete. Introspectie metadata - Reflection o Clasa Type o Exemple de utilizare Atribute preconstruite; definite de dezvoltator (custom);

More information

Laborator 1 Tehnologia Java

Laborator 1 Tehnologia Java Laborator 1 Tehnologia Java Tehnologia Java este alcatuita dintr-un conglomerat de concepte dintre care amintim: limbajul de programare Java dezvoltat pe baza paradigmei obiect orientate; platforma de

More information

Universitatea Constantin Brâncuşi din Târgu-Jiu. Aplicații JAVA. Lect.dr. Adrian Runceanu

Universitatea Constantin Brâncuşi din Târgu-Jiu. Aplicații JAVA. Lect.dr. Adrian Runceanu Universitatea Constantin Brâncuşi din Târgu-Jiu Aplicații JAVA Lect.dr. Adrian Runceanu Curs 4 Applet-uri în Java 10.03.2016 Curs - Aplicatii Java 2 Applet-uri în Java 1. Ce este un applet? 2. Crearea

More information

Ierarhia claselor de tip container

Ierarhia claselor de tip container Ierarhia claselor de tip container GridPane Are asociata o disciplina de aranjare a componentelor de tip matriceal, asemanatoare celei introduce de GridLayout din Swing public class GridPane extends Pane;

More information

informatii despre exceptia respectiva starea programului în momentul producerii acelei exceptii

informatii despre exceptia respectiva starea programului în momentul producerii acelei exceptii Curs 3 Exceptii Ce sunt exceptiile? Avantajele exceptiilor "Prinderea" si tratarea exceptiilor (Instructiunile try-catch-finally) "Aruncarea" exceptiilor (Clauza throws, Instructiunea throw) Ierarhia claselor

More information

Aplicații JAVA. Lect.dr. Adrian Runceanu

Aplicații JAVA. Lect.dr. Adrian Runceanu Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Aplicații JAVA Lect.dr. Adrian Runceanu Curs 6 Colecții în Java 01.04.2015 Curs - Aplicatii

More information

Lenuta Alboaie Reţele de calculatoare

Lenuta Alboaie Reţele de calculatoare Programarea in retea - OOB- Lenuta Alboaie adria@info.uaic.ro 1 Cuprins Trimiterea si receptarea datelor in regim 2 Ideea: in timpul unei conexiuni cind sunt transmise date ( inband data ), si daca la

More information

Aplicatii JAVA. JAVA Excepții în Java # 7. Adrian Runceanu

Aplicatii JAVA. JAVA Excepții în Java # 7. Adrian Runceanu Aplicatii JAVA # 7 JAVA Excepții în Java 2017 Adrian Runceanu www.runceanu.ro/adrian Curs 7 Excepții în Java 24.03.2017 Curs - Aplicatii Java 2 Excepții în Java 1. Ce sunt excepțiile? 2. Avantajele excepțiilor

More information

Aplicatii JAVA. JAVA Interfata grafica AWT (partea II) # 5. Adrian Runceanu

Aplicatii JAVA. JAVA Interfata grafica AWT (partea II) # 5. Adrian Runceanu Aplicatii JAVA # 5 JAVA Interfata grafica AWT (partea II) 2017 Adrian Runceanu www.runceanu.ro/adrian Curs 5 Interfata grafica AWT (Abstract Window Toolkit ) (partea a II-a) 24.03.2017 Curs - Aplicatii

More information

CONFIGURAREA UNUI SERVER IRC IN LINUX. Bica Bogdan *

CONFIGURAREA UNUI SERVER IRC IN LINUX. Bica Bogdan * CONFIGURAREA UNUI SERVER IRC IN LINUX Bica Bogdan * In this exemple i show how to configure an irc server based on ircd dameon named ircu.this is the main file name ircd.conf and the most important.configure

More information

Îmbunătăţiri aduse în limbajul C++ facilităţilor standard ale limbajului C (cele care nu ţin de conceptele programării orientate obiect).

Îmbunătăţiri aduse în limbajul C++ facilităţilor standard ale limbajului C (cele care nu ţin de conceptele programării orientate obiect). Îmbunătăţiri aduse în limbajul C++ facilităţilor standard ale limbajului C (cele care nu ţin de conceptele programării orientate obiect). Supraîncărcarea numelui de funcţii (overloading) In C nu este permisa

More information

Programarea Orientată pe Obiecte Teorie Subiecte pentru proba scrisă a examenului de licență

Programarea Orientată pe Obiecte Teorie Subiecte pentru proba scrisă a examenului de licență Programarea Orientată pe Obiecte Teorie Subiecte pentru proba scrisă a examenului de licență 1. Precizați dacă afirmația care urmează este corectă ori incorectă și motivați răspunsul în 4-5 fraze. (Notă:

More information

Scop: Crearea unei aplicatii ce exemplifica paternul MVVM. In plus se creaza si o comanda in WPF.

Scop: Crearea unei aplicatii ce exemplifica paternul MVVM. In plus se creaza si o comanda in WPF. Laborator MVVM Scop: Crearea unei aplicatii ce exemplifica paternul MVVM. In plus se creaza si o comanda in WPF. Clasele implicate in acest pattern sunt date in figura de mai jos. Mai multe informatii

More information

Tehnici avansate de programare

Tehnici avansate de programare Tehnici avansate de programare Curs - Cristian Frăsinaru acf@infoiasi.ro Facultatea de Informatică Universitatea Al. I. Cuza Iaşi Lucrul dinamic cu clase Tehnici avansate de programare p.1/3 Cuprins Incarcarea

More information

SECTION 5 L1 - Group By and Having Clauses

SECTION 5 L1 - Group By and Having Clauses SECTION 5 L1 - Group By and Having Clauses Clauza Group By 1. SELECT department_id, AVG(salary),MAX(salary) 2. SELECT job_id, last_name, AVG(salary) GROUP BY job_id; ORA-00979: not a GROUP BY expression

More information

Cursul 4 7 Martie

Cursul 4 7 Martie Cursul 4 7 Martie adiftene@infoiasi.ro 1 Din Cursurile trecute Forward Engineering Reverse Engineering Diagrame de Interacţiuni Diagrame de Secvenţă Diagrame de Colaborare 2 Diagrame Diagrame UML Diagrame

More information

PNI SmartCAM. versiune Android. - manual de utilizare-

PNI SmartCAM. versiune Android. - manual de utilizare- PNI SmartCAM versiune Android - manual de utilizare- Introducere: Acest manual se refera la instalarea si utilizarea aplicatiei PNI SmartCAM, software necesar monitorizarii atat camerei cu IP PNI 631W,

More information

Gestionarea memoriei dinamice. Tablouri şi şiruri de caractere. Conversii de date. Operaţii de intrare / ieşire

Gestionarea memoriei dinamice. Tablouri şi şiruri de caractere. Conversii de date. Operaţii de intrare / ieşire Lucrarea 3 Gestionarea memoriei dinamice. Tablouri şi şiruri de caractere. Conversii de date. Operaţii de intrare / ieşire Cuprins Simbolul this...1 Colectorul de reziduuri (Garbage Collector)...4 Transmiterea

More information

POO. Observer Pattern (prezentare bazata pe GoF)

POO. Observer Pattern (prezentare bazata pe GoF) POO Observer Pattern (prezentare bazata pe GoF) 1 Observator: :intentie Defineste o relatie de dependenta 1..* intre obiecte astfel incat cand un obiect isi schimba starea, toti dependentii lui sunt notificati

More information

Tablouri si Colectii. Definire tablou. Tablouri unidimensionale, multidimensionale, de lungimi variabile (jagged arrays).

Tablouri si Colectii. Definire tablou. Tablouri unidimensionale, multidimensionale, de lungimi variabile (jagged arrays). Tablouri si Colectii Definire tablou. Tablouri unidimensionale, multidimensionale, de lungimi variabile (jagged arrays). Colectii nongenerice Colectii generice Colectii specializate Clasificare colectii

More information

Proiectarea bazelor de date. PL/SQL Proceduri în PL/SQL(partea II-a) # 9. Adrian Runceanu

Proiectarea bazelor de date. PL/SQL Proceduri în PL/SQL(partea II-a) # 9. Adrian Runceanu Proiectarea bazelor de date # 9 PL/SQL Proceduri în PL/SQL(partea II-a) 2016 Adrian Runceanu www.runceanu.ro/adrian Curs 9 Proceduri în PL/SQL Proiectarea bazelor de date 2 Cuprins Proceduri în PL/SQL

More information

Introflection. Dave Landers BEA Systems, Inc.

Introflection. Dave Landers BEA Systems, Inc. Introflection Dave Landers BEA Systems, Inc. dave.landers@bea.com Agenda What is Introflection? Primary Classes and Objects Loading Classes Creating Objects Invoking Methods Java Beans Proxy What is Introflection?

More information

Programarea Aplicațiilor Windows curs 1

Programarea Aplicațiilor Windows curs 1 Programarea Aplicațiilor Windows curs 1 Lect. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică Academia de Studii Economice București cristian.ciurea@ie.ase.ro 1 Agenda 1. Structură

More information

1. Clase. Abstractizarea datelor

1. Clase. Abstractizarea datelor 1. Clase. Abstractizarea datelor Vom face în cursul de Programarea calculatoarelor şi limbaje de programare II o introducere în programarea orientată pe obiecte, cu aplicaţii în limbajul de programare

More information

Curs 14 Colectii. Ce sunt colectiile? Interfete ce descriu colectii. Curs 14. Ce sunt colectiile? Interfetele de baza care descriu colectii

Curs 14 Colectii. Ce sunt colectiile? Interfete ce descriu colectii. Curs 14. Ce sunt colectiile? Interfetele de baza care descriu colectii Curs 14 Colectii Ce sunt colectiile? Interfetele de baza care descriu colectii o Collection o Set o List o Map o SortedSet o SortedMap Implementari ale colectiilor Folosirea eficienta a colectiilor Algoritmi

More information

Laborator 9. Programare orientată pe obiecte Laborator 9. 1) Să se realizeze o aplicaţie care să rezolve ecuaţii de gradul al doilea.

Laborator 9. Programare orientată pe obiecte Laborator 9. 1) Să se realizeze o aplicaţie care să rezolve ecuaţii de gradul al doilea. Laborator 9 1) Să se realizeze o aplicaţie care să rezolve ecuaţii de gradul al doilea. Interfaţa aplicaţiei va fi următoarea Casetelor text li se vor da denumirile: camp_a, camp_b, camp_c, rez. Evenimentului

More information

Curs 5. Programare Paralela si Distribuita. Forme de sincronizare - Java. Curs 5 - PPD 1

Curs 5. Programare Paralela si Distribuita. Forme de sincronizare - Java. Curs 5 - PPD 1 Curs 5 Programare Paralela si Distribuita Forme de sincronizare - Java Curs 5 - PPD 1 Monitor in Java Fiecare obiect din Java are un mutex care poate fi blocat sau deblocat in blocurile sincronizate: Bloc

More information

JAVA JavaBeans Java, summer semester

JAVA JavaBeans Java, summer semester JAVA JavaBeans Components overview component reusable piece of code characterized by services provided and required no exact definition component models JavaBeans Enterprise JavaBeans (EJB) CORBA Component

More information

Tipuri de date structurate

Tipuri de date structurate Tipuri de date structurate Problema 1 Să se citească un șir A de la tastatură, citirea șirului se termina la introducerea valorii 0. Să se construiască și să se tipărească șirul B de perechi (element,

More information

13. Java si XML Fisiere XML în aplicatii Java... XML si orientarea pe obiecte... Utilizarea unui parser SAX... Utilizarea unui parser DOM...

13. Java si XML Fisiere XML în aplicatii Java... XML si orientarea pe obiecte... Utilizarea unui parser SAX... Utilizarea unui parser DOM... CUPRINS 1. Java ca limbaj de programare cu obiecte Diferente între limbajele Java si C................................... Tipuri clasã si tipuri referintã....................................... Structura

More information

Lucrarea nr. 2. Funcţii şi structuri în C++

Lucrarea nr. 2. Funcţii şi structuri în C++ Lucrarea nr. 2 Funcţii şi structuri în C++ Pe măsură ce programele cresc in complexitate şi dimensiune, ele trebuiesc împărţite în fragmente mai mici şi mai uşor de gestionat numite funcţii. Funcţiile

More information

-modificatorul unei interfeţe este public sau abstract (implicit)

-modificatorul unei interfeţe este public sau abstract (implicit) 6.1. Interfeţe Java - interfeţele Java abstractizează complet metodele unei clase (interfaţa clasei) faţă de orice implementare; - folosind cuvântul rezervat interface (în loc de class) specificăm ce poate

More information

Laborator 5 Sisteme Lindenmayer. Temă

Laborator 5 Sisteme Lindenmayer. Temă Laborator 5 Sisteme Lindenmayer. Temă 1. Parcurgerea unui pătrat. Următorul L-sistem Alfabet=F,+,-; Producţii= F -> F-F+F+F+F-F-F-F+F, + -> +, - -> - Axioma= F generează, cu interpretările standard (F

More information

Programare orientată pe obiecte. 1. Clase şi obiecte (continuare) 2. Tablouri

Programare orientată pe obiecte. 1. Clase şi obiecte (continuare) 2. Tablouri Programare orientată pe obiecte 1. Clase şi obiecte (continuare) 2. Tablouri // Autor : Fred Swartz import javax.swing.*; public class KmToMiles { Metode: cum funcţionează un apel private static double

More information

Design patterns. Conf. univ. dr. Catalin Boja

Design patterns. Conf. univ. dr. Catalin Boja Design patterns Conf. univ. dr. Catalin Boja catalin.boja@ie.ase.ro http://acs.ase.ro/software-quality-testing Calitate cod sursă Principii urmărite în scrierea codului: Ușor de citit/înțeles clar Ușor

More information

Metode avansate de programare

Metode avansate de programare Metode avansate de programare Informatică Română, 2017-2018, Curs 1 Noțiuni introductive If builders built houses the way programmers built programs, first woodpecker to come along would destroy civilization.

More information

Curs 3 Clase și obiecte. Limbajul de programare C++ Programare orientată obiect

Curs 3 Clase și obiecte. Limbajul de programare C++ Programare orientată obiect Curs 3 Clase și obiecte Limbajul de programare C++ Programare orientată obiect Limbajul de programare C++ Urmașul limbajului C apărut în anii 80, dezvoltat de Bjarne Stroustrup Bibliografie: B. Stroustup,

More information

Curs 1 PPOO. Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică

Curs 1 PPOO. Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică Curs 1 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1 Structură evaluare Curs = 60% (examen la calculator) Seminar = 20% (proiect)

More information

Programare orientată pe obiecte. 1. Pachete (packages) 2. Moştenire

Programare orientată pe obiecte. 1. Pachete (packages) 2. Moştenire Programare orientată pe obiecte 1. Pachete (packages) 2. Moştenire Organizarea claselor înrudite în pachete Pachet (package): set de clase înrudite Pentru a pune o clasă într-un pachet, trebuie scrisă

More information

Capitolul 4. Fisiere de date si Tablespace. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Capitolul 4. Fisiere de date si Tablespace. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5. Capitolul 4 Fisiere de date si Tablespace 1 Continut capitol Ca structura fizica, baza de date contine fisiere de control, de date si de Redo log. Ca structura logica o baza de date se compune din: Tablespace

More information

Laborator 3 Java. Introducere in programarea vizuala

Laborator 3 Java. Introducere in programarea vizuala Laborator 3 Java Introducere in programarea vizuala 1. Pachetele AWT si Swing. 2. Ferestre 3.1. Introduceti urmatorul program JAVA: public class Pv public static void main(string args[ ]) JFrame fer=new

More information

Şiruri de caractere System.String string Verbatim verbatim verbatim Exemplu

Şiruri de caractere System.String string Verbatim verbatim verbatim Exemplu Şiruri de caractere Pentru reprezentarea şirurilor de caractere, în limbajul C#, tipul de date utilizat este clasa System.String (sau aliasul string). Se definesc două tipuri de şiruri: regulate de tip

More information

Memorator funcţii predefinite C++ Funcţii matematice

Memorator funcţii predefinite C++ Funcţii matematice Funcţii matematice Funcţia Prototipul funcţiei Fişierul pow(x,y) double pow (double x,double y); long double pow ( long double x, long double y); float pow (float x,float y); double pow (double x, int

More information

interface MyAnno interface str( ) val( )

interface MyAnno interface str( ) val( ) Unit 4 Annotations: basics of annotation-the Annotated element Interface. Using Default Values, Marker Annotations. Single-Member Annotations. The Built-In Annotations-Some Restrictions. 1 annotation Since

More information

Se cer 2 variante: una cu implementarea statica si a doua cu implementarea dinamica a structurilor de date necesare. Comentati variantele.

Se cer 2 variante: una cu implementarea statica si a doua cu implementarea dinamica a structurilor de date necesare. Comentati variantele. Lucrarea 1 SDA 03.04.2017 Sa se realizeze urmatoarele programe, in limbaj C: 1. Se primesc de la intrarea standard: un numar k si un sir infinit de numere naturale a i. Se afiseaza la iesirea standard,

More information

PROGRAMARE ORIENTATĂ PE OBIECTE

PROGRAMARE ORIENTATĂ PE OBIECTE Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu PROGRAMARE ORIENTATĂ PE OBIECTE Lector dr. Adrian Runceanu 03.01.2014 1 Curs 15 Limbajul

More information

Cursul 4 9,10 Martie

Cursul 4 9,10 Martie Cursul 4 9,10 Martie adiftene@infoiasi.ro 1 Din Cursurile trecute Forward Engineering Reverse Engineering Diagrame de Interacţiuni Diagrame de Secvenţă Diagrame de Colaborare 2 Diagrame Diagrame UML Diagrame

More information

Operatori. Comentarii. Curs 1

Operatori. Comentarii. Curs 1 Operatori atribuirea: = operatori matematici: +, -, *, /, % Este permisa notatia prescurtata de forma lval op= rval (ex: n += 2) Exista operatorii pentru autoincrementare si autodecrementare (post si pre)

More information

Lucrarea de laborator nr. 4.NET Remoting 1

Lucrarea de laborator nr. 4.NET Remoting 1 Lucrarea de laborator nr. 4.NET Remoting 1 4. Implementarea claselor Well Known (Server Activated) In cadrul acestei lucrari de laborator vom realiza cateva aplicatii care vor exemplifica conceptele fundamentale

More information

JavaScript - Intorducere. Și nu numai...

JavaScript - Intorducere. Și nu numai... JavaScript - Intorducere Și nu numai... Ce facem azi Nu o sa va vină să credeți. Pe foaia albă vă scrieți numele și prenumele ȘI Povestim despre JavaScript Exemple de aplicare discutii și surprize mici

More information

Elemente de programare in retea

Elemente de programare in retea Elemente de programare in retea Conexiuni TCP TCP (Transport Control Protocol) este un protocol ce furnizează un flux de date între doua calculatoare. Acest protocol asigură stabilirea unei conexiuni permanente

More information

Fisiere text in Java.

Fisiere text in Java. Fisiere text in Java. Doru Anastasiu Popescu Prelucrarea fisierelor text in Java Aspecte teoretice: http://cursuri.cs.pub.ro/~poo/wiki/index.php/input/output http://upm.ro/intranet/ecalin/cd_educational/cd/javac/cap3.htm

More information

Curs 4 Programare Orientată pe Obiecte în limbajul Java. Programare Orientată pe Obiecte

Curs 4 Programare Orientată pe Obiecte în limbajul Java. Programare Orientată pe Obiecte Curs 4 Programare Orientată pe Obiecte în limbajul Java Programare Orientată pe Obiecte Cuprins Exemplu clasa Complex Variabie şi metode de instanţă/clasă Blocuri statice Clasa Object Polimorfism Tipul

More information

Curs 10 Applet-uri. Ce este un applet? Crearea unui applet. Curs 10

Curs 10 Applet-uri. Ce este un applet? Crearea unui applet. Curs 10 Curs 10 Applet-uri Ce este un applet? Crearea unui applet simplu Ciclul de viata al unui applet Interfata grafica cu utilizatorul Definirea si folosirea parametrilor Tag-ul Folosirea firelor de

More information

Design patterns. Assoc. prof. Catalin Boja, PhD

Design patterns. Assoc. prof. Catalin Boja, PhD Design patterns Assoc. prof. Catalin Boja, PhD catalin.boja@ie.ase.ro http://acs.ase.ro/software-quality-testing Source code quality Principles for writing the code: Easy to read / understand - clear Easy

More information

8. Tablouri. 8.1 Tipuri de dată simple şi tipuri de dată structurate

8. Tablouri. 8.1 Tipuri de dată simple şi tipuri de dată structurate 8. Tablouri Tablourile (arrays) reprezintă un tip important de structură de date şi sunt colecţii de obiecte de acelaşi tip reunite sub un singur nume. Uneori este necesar să referim anumite variabile

More information

la Microsoft Office Communicator pentru ca modificarea selecţiei dispozitivului telefonic să se actualizeze.

la Microsoft Office Communicator pentru ca modificarea selecţiei dispozitivului telefonic să se actualizeze. QUICK START GUIDE Plug-in de selec ie a telefonului pentru caracteristica de control al apelurilor din Microsoft Office Communicator pentru Cisco Unified Presence versiunea 7.0(3) Prezentare generală 2

More information

Aplicații JAVA. Lect.dr. Adrian Runceanu

Aplicații JAVA. Lect.dr. Adrian Runceanu Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Aplicații JAVA Lect.dr. Adrian Runceanu Curs 8 Interfata grafica AWT 22.04.2015 Curs

More information

Capitolul 8 Funcţii în limbajul C

Capitolul 8 Funcţii în limbajul C Obiectiv: stabilirea avantajelor pe care le aduce în programarea structurată folosirea funcţiilor. Activităţi: - Prezentarea funcţiilor definite de utilizator - Descrierea parametrilor formali şi a parametrilor

More information

Proiectarea Rețelelor 1. Componentele hardware ale unui sistem de calcul

Proiectarea Rețelelor 1. Componentele hardware ale unui sistem de calcul Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiectarea Rețelelor 1. Componentele hardware ale unui sistem de calcul Integrated IS-IS 25 Noiembrie 2010 Proiectarea

More information

Clase si metode abstracte

Clase si metode abstracte Capitolul 4 Clase si metode abstracte... 2 Interfete... 6 Mostenirea unor interfete... 6 Implementarea unei interfete... 7 Interfete si clase abstracte... 10 Mai multe exemple cu interfete... 10 Variabile

More information

Design patterns. Conf. univ. dr. Catalin Boja

Design patterns. Conf. univ. dr. Catalin Boja Design patterns Conf. univ. dr. Catalin Boja catalin.boja@ie.ase.ro Calitate cod sursă Principii urmărite în scrierea codului: Ușor de citit/înțeles clar Ușor de modificat structurat Ușor de reutilizat

More information

Curs 8. Programare orientată obiect în Delphi (II)

Curs 8. Programare orientată obiect în Delphi (II) Programare Delphi Curs 8 Programare orientată obiect în Delphi (II) http://docwiki.embarcadero.com/radstudio/en/classes_and_objects_index 1. Deriea claselor. După cum am văzut, în Delphi este definită

More information

Delegates Facultatea de Informatica Iasi Universitatea Al I. Cuza Iasi /51

Delegates Facultatea de Informatica Iasi Universitatea Al I. Cuza Iasi /51 Facultatea de Informatica Iasi Universitatea Al I. Cuza Iasi 24.11.2014 1/51 Delegates Cuprins Partea a - I - a Ce este un delegate? Definirea unui delegate. Clasele de baza System.MulticastDelegate si

More information

Capitolul 4. Fisiere de date si Tablespace. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Capitolul 4. Fisiere de date si Tablespace. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5. Capitolul 4 Fisiere de date si Tablespace 1 Continut capitol Ca structura fizica, baza de date contine fisiere de control, de date si de Redo log. Ca structura logica o baza de date se compune din: Tablespace

More information

Rezolvarea exceptiilor

Rezolvarea exceptiilor PL/SQL SECTIUNE 6 Rezolvarea exceptiilor Entering an incorrect username and/or password Forgetting to include the @ in an email address Entering a credit card number incorrectly Entering an expiration

More information

Erori frecvente la validarea D394

Erori frecvente la validarea D394 Erori frecvente aparute la validarea declaratiei D394 cu ajutorul soft-ului J-

More information

Curs practic de Java

Curs practic de Java Curs practic de Java Curs - Cristian Frăsinaru acf@infoiasi.ro Facultatea de Informatică Universitatea Al. I. Cuza Iaşi Internaţionalizarea Curs practic de Java p.1/1 Cuprins Introducere Clasa Locale Formatarea

More information

Operații de intrare/ieșire în C++

Operații de intrare/ieșire în C++ Operații I/O în limbajul C++ Operații de intrare/ieșire în C++ Mihai Gabroveanu Limbajul C++ moștenește de la C funcțiile de I/O Dezavantaj: permit manipularea doar a tipurilor de bază Limbajul C++ introduce

More information

8.Comenzi AT pentru module Bluetooth

8.Comenzi AT pentru module Bluetooth 8.Comenzi AT pentru module Bluetooth Cuprins Laborator 8 8.1. Transmisia datelor prin Bluetooth 8.2. Desfăşurarea lucrării 8.3.Lista de comenzi AT Cuprins Introducere Ultima lucrare catre tratează comenzile

More information

Ce este o clasă? Programare orientată pe obiecte. Ce este o clasă? Clase

Ce este o clasă? Programare orientată pe obiecte. Ce este o clasă? Clase Ce este o clasă? Programare orientată pe obiecte 1. Recapitulare 2. InformaŃii despre examen O clasă este în primul rând o descriere a obiectelor (instanńelor), clasei respective Clasa conńine unul sau

More information

EPITA Première Année Cycle Ingénieur. Atelier Java - J3

EPITA Première Année Cycle Ingénieur. Atelier Java - J3 EPITA Première Année Cycle Ingénieur marwan.burelle@lse.epita.fr http://www.lse.epita.fr Overview 1 Imagination From 2 Plan 1 Imagination From Plan 1 Imagination From What is Reflection is the process

More information

Concepte fundamentale ale limbajelor de programare. Limbaje de programare orientate pe obiecte Curs 10 conf. dr. ing. Ciprian-Bogdan Chirila

Concepte fundamentale ale limbajelor de programare. Limbaje de programare orientate pe obiecte Curs 10 conf. dr. ing. Ciprian-Bogdan Chirila Concepte fundamentale ale limbajelor de programare Limbaje de programare orientate pe obiecte Curs 10 conf. dr. ing. Ciprian-Bogdan Chirila Cuprins programarea orientata pe obiecte mostenire legarea dinamica

More information

Expresii lambda (Lambda expressions). Arbori de expresii (Expression trees).

Expresii lambda (Lambda expressions). Arbori de expresii (Expression trees). Cuprins Expresii lambda (Lambda expressions). Arbori de expresii (Expression trees). Cuvantul cheie var obiecte si initializarea colectiilor. tipuri anonime, new forma noua. Metode extinse (Extension methods).

More information