NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

---Enunt---
Fie o clasa Project care modeleaza un proiect software. Proiectele vor avea un numar nelimitat de participanti si neaparat un manager. La un proiect se pot
adauga oricand participanti, folosind metoda public void addMember(Member m). Orice proiect are un titlu (String), un obiectiv (String) si niste (unul sau mai multe, vezi mai jos) fonduri (long).

Managerul si toti participantii vor fi programatori care au o varsta (int) si un nume (String). Un programator poate participa in mai
multe proiecte.

Exista trei tipuri de proiecte: comerciale, militare si open-source.
Cele comerciale si militare au un dead-line (String), cele open-source au un mailinglist (String) si numar nelimitat de membri. Cele militare au si o parola (String), iar cele comerciale au fonduri de marketing (long) egale cu jumatate din fondurile normale si un numar de echipe (int) mai mic decat numarul de membri.

Toate proiectele implementeaza o interfata Risky care are o metoda public int getRisk(). Aceasta metoda calculeaza riscurile legate de un proiect.
La cele militare, riscul estenumarul membrilor / lungimea parolei / fonduri * 0.00001.
La cele comerciale, riscul este echipe * 3 / numarul membrilor / fonduri * 0.00001 - fonduri de marketing *0.00003.
La proiectele open-source, riscul este nr. membrii / fonduri * 0.0001.

Clasa InvestmentCompany va modela o firma care, date fiind niste proiecte, calculeaza care este proiectul cel mai putin riscant. Va pune deci la dispozitie o metoda public void addProject(Project p) si o metoda public Project getBestInvestment(). Clasa InvestmentCompany va avea si o metoda public static void main(String[] args) care sa exemplifice folosirea ei.
----------------------------------------------------------------------------------------------------------------------------
//clasa Projects
import java.util.ArrayList;
//creat clasa cu variabilele sale.clasa ce implementeaza interfata risky

public class Projects implements Risky{

private String titlu;
private String obiectiv;

//folosim arraylist pentru ca avem mai multi membri

protected ArrayList<Member> membri = new ArrayList<Member>();

/*instantiat array folosit pentru a stoca mai multe fonduri */
private long [] fonduri = new long[10];

//creat constructorul Project
public Projects ( String titlu, String obiectiv, long[]fonduri){
this.setTitlu(titlu);
this.setObiectiv(obiectiv);
this.setFonduri(fonduri);
}

//creat getter pentru ArrayList
public ArrayList<Member> getMembri() {
return membri;
}
// creat contructor (obiect) Membri
public void setMembri(ArrayList<Member> membri) {
this.membri = membri;
}
//metoda add member
public void addMember(Member m){

membri.add(m);
}
/*incapsuleaza campurile unei clase, le face accesibile
* numai prin metodele sale publice, mentinand valorile private*/
public String getTitlu() {
return titlu;
}
// seter titlu generat
public void setTitlu(String titlu) {
this.titlu = titlu;
}
// getter obiectiv generat
public String getObiectiv() {
return obiectiv;
}
// seter obiectiv generat
public void setObiectiv(String obiectiv) {
this.obiectiv = obiectiv;
}
// geter lista fonduri
public long [] getFonduri() {
return fonduri;
}
// setter lista fonduri
public void setFonduri(long [] fonduri) {
this.fonduri = fonduri;
}
//metoda de calcul suma fondurilor
public long getFond(){

long suma = 0;
for( int i = 0;i<10;i++){
suma = suma + this.getFonduri()[i];
}
return suma;
}
//metoda pentru a fi suprascrisa de subclasa
public int getRisk(){
return 0;

}

}
//----------------
//clasa comerciale mosteneste caracteristicile clasei projects
public class Comerciale extends Projects {
//creat clasa comerciale cu variabilele sale

private String deadline;
private String fonduriDeMarketing;
private int numarDeEchipe;
//creat constructorul comerciale si (super) - mostenirile din clasa projects
public Comerciale(String titlu, String obiectiv, long []fonduri, String deadline, String fonduriDeMarketing, int numarDeEchipe ) {
super(titlu, obiectiv, fonduri);
this.setDeadline(deadline);
this.setFonduriDeMarketing(fonduriDeMarketing);
this.setNumarDeEchipe(numarDeEchipe);
}

//getter
public String getFonduriDeMarketing() {
return fonduriDeMarketing;
}
//setter
public void setFonduriDeMarketing(String fonduriDeMarketing) {
this.fonduriDeMarketing = fonduriDeMarketing;
}
//getter
public String getDeadline() {
return deadline;
}
// setter
public void setDeadline(String deadline) {
this.deadline = deadline;
}
//getter
public int getNumarDeEchipe() {
return numarDeEchipe;
}
//setter
public void setNumarDeEchipe(int numarDeEchipe) {
this.numarDeEchipe = numarDeEchipe;
}
//suprascrie o metoda din clasa parinte-projects
@Override
public int getRisk() {
// TODO Auto-generated method stub

int nrMembri = this.getMembri().size();
int nrEchipe = this.getNumarDeEchipe();
long fond = this.getFond();
//transforma string in double
double fonduriM = Double.parseDouble(fonduriDeMarketing);

return (int) (nrEchipe*3/nrMembri/fond * 0.00001-fonduriM*0.00003);
}
}
//
//creat clasa militare cu variabilele sale
public class Militare extends Projects {
private String deadline;
private String parola;
//creat obiectul militare cu variabilele sale si cele mostenite(super)
public Militare(String titlu, String obiectiv, long []fonduri, String deadline, String parola){
super(titlu, obiectiv, fonduri);
this.setDeadline(deadline);
this.setParola(parola);
}
// seter
public String getDeadline() {
return deadline;
}
//seter
public void setDeadline(String deadline) {
this.deadline = deadline;
}
//geter
public String getParola() {
return parola;
}
//seter
public void setParola(String parola) {
this.parola = parola;
}
/*suprascrie o metoda din clasa parinte-projects*/
@Override
public int getRisk() {

int nrMembri = this.getMembri().size();
int lungimeParola = this.getParola().length();
long fond = this.getFond();

return (int) (nrMembri/lungimeParola/fond * 0.00001);
}

}
//
/* clasa opensource extinde clasa projects
* cream clasa cu variabilele sale
*/
public class OpenSource extends Projects {

private String mailingList;
public String getMailingList() {
return mailingList;
}

//seter
public void setMailingList(String mailingList) {
this.mailingList = mailingList;
}

//creat obiectul militare cu variabilele sale si cele mostenite(super)

public OpenSource(String titlu, String obiectiv, long []fonduri, String mailingList){
super(titlu, obiectiv, fonduri);
this.setMailingList(mailingList);

}
@Override
//suprascrie o metoda din clasa parinte-projects
public int getRisk() {
// TODO Auto-generated method stub


int nrMembri = this.getMembri().size();
long fond = this.getFond();

return (int) (nrMembri/fond * 0.00001);

}

}
///
//creat clasa member cu valorile sale din enunt

public class Member {
private int varsta;
private String nume;

//geter

public String getNume() {
return nume;
}
//seter
public void setNume(String nume) {
this.nume = nume;
}
//geter
public int getVarsta() {
return varsta;
}
//seter
public void setVarsta(int varsta) {
this.varsta = varsta;
}

}
//
//creata interfata risky cu metoda getrisk
public interface Risky {
public int getRisk();

}
//
import java.util.ArrayList;

public class InvestmentCompany {

/** instantiere lista tuturor proiectelor */
protected static ArrayList<Projects> AllProjects = new ArrayList<Projects>();

/**
* adauga un proiect in lista de proiecte
* @param p - este proiectul ce trebuie adaugat
*/
public static void addProject(Projects p){

AllProjects.add(p);

}

/**
* metoda calculeaza cel mai bun project investment
* returneaza the best investment
*/

public static Projects getBestInvestment(){

/* minimului ii dam valoarea maxima a unui int
* cu ajutorul clasei Integer si constanta max.value */
int min = Integer.MAX_VALUE;

Projects bestProject = null;
//loop si conditie
for( int i=0 ; i < AllProjects.size() ; i++ ){
if(min > AllProjects.get(i).getRisk()){
min = AllProjects.get(i).getRisk();
bestProject = AllProjects.get(i);
}
}
return bestProject;

}


// o metoda in care adaugam proiecte pentru a fi comparate
public static void main(String[] args){

// array din clasa projects are 10 valori
long [] fonduri = {1,1,1, 1, 1, 1, 1, 1, 1, 1};
//

Comerciale c1 = new Comerciale("c1", "expansiune",fonduri ,"decembrie", "25", 15);
c1.addMember (new Member());
c1.addMember (new Member());
c1.addMember (new Member());
c1.addMember (new Member());

addProject(c1);

long [] fonduri1 = {4,5,6, 9, 8, 7, 6, 5, 4, 1};
Comerciale c2 = new Comerciale("c2", "expansiune",fonduri1 ,"decembrie", "25", 15);
c2.addMember (new Member());
addProject(c2);

long [] fonduri2 = {9,9,9, 9, 8, 7, 6, 5, 4, 1};
Militare m1 = new Militare("m1", "anihilare", fonduri2, "octombrie", "1a2b3c");
m1.addMember (new Member());
addProject(m1);

long [] fonduri3 = {5,9,9, 9, 8, 7, 5, 5, 5, 1};
OpenSource o1 = new OpenSource("o1", "homework", fonduri3, "spam");
o1.addMember (new Member());
addProject(o1);
//afisare a rezultatului dupa comparatie
System.out.println("Proiectul cel mai putin riscant este: " + getBestInvestment().getTitlu());

}




}
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.