Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Care mai sunt mediile de admitere...

Laptop cu HDD atasare memorie MMC...

Hartile google nu mai au chenarul...

Tomate in ghiveci la curte?
 Idei cale de actiune recuperare g...

Intoleranța lactoza- vegan v...

Tobe acustice insonorizare in blo...

Cine canta? Fragment din melodie...
 Tablou sigurante Dacia Sandero 2012

Baby Reindeer - 2024

Hotii voteaza hoti?!

Camera video masina
 Zilele emailului din gospodaria n...

Best gaming laptop?

Humane (2024)

Recomandare casti 100-150 lei
 

Muncă multă în constructor - da sau ba?

* * * - - 2 votes
  • Please log in to reply
98 replies to this topic

#55
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

View PostIulius-Foyas, on 03 mai 2019 - 01:27, said:

Dar adaugare de elemente si cresterea capacitatii sunt metode publice care nu pot fi accesate in orice ordine, de aici conform celor spuse de OC  un vector gol este invalid.
Nu pot fi accesate in orice ordine? Nu stii ce-i ala OOP, business logic, cum functioneaza un container... Nu-i bai, cu totii am pornit de undeva - dar ar fi cazul sa-ti mai temperezi tupeul.

Desigur, poti apela adaugarea de elemente si poti creste capacitatea unui vector (cu sau fara elemente) in orice ordine-ti convine. Cresterea capacitatii, de altfel, este complet optionala - vectorul se redimensioneaza automat - si folosita doar pentru evitarea unor realocari.

View PostIulius-Foyas, on 03 mai 2019 - 01:27, said:

Ba din contra, ele sunt OOP real modelat prin OOAD si nu din lumea academica teoretica, unde se prind fluturi ideali cu prastia.
Si unde ai definit vreun obiect, in exemplele tale? Nici macar nu te intreb de relatiile dintre obiecte, ca aici deja iti trebuie doua.

Ca sa ajungi in lumea academica trebuie sa treci de liceu. Extemporale pe hartie corectate cu rosu si notate de profesor, ziceai?

#56
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostTS030, on 03 mai 2019 - 09:42, said:

Nu pot fi accesate in orice ordine? Nu stii ce-i ala OOP, business logic, cum functioneaza un container... Nu-i bai, cu totii am pornit de undeva - dar ar fi cazul sa-ti mai temperezi tupeul.
Hehe,  atunci cand esti facut sah mat cu propriile principiuri "strousstrupiene"  nu prea este placut.
Eu n-am tupeu, eu vorbesc realitate si arat  acolo unde sunt greseli tehnice sau interpretari gresite(care la tine sunt multe) care nu au absolut nici un fundament
ci sunt doar postulate academice -strousstroupine invate mecanic pe dinafara si aplicate mecanic.
Asa ca te rog frumos, incearca sa-ti argumentezi afirmatiile folosind cod asa cum fac eu.

Quote

Desigur, poti apela adaugarea de elemente si poti creste capacitatea unui vector (cu sau fara elemente) in orice ordine-ti convine. Cresterea capacitatii, de altfel, este complet optionala - vectorul se redimensioneaza automat - si folosita doar pentru evitarea unor realocari.

Se reculeaza asa de mult capacitatea aia incat la un vector gol da eroare daca accesezi acea propietate.  Asa cum reiese mai jos:
int main()
{
std::vector<int> myvector;
cout << myvector.capacity; //Compiler Error C3867
return 0;
}

Adica un vector gol nu-si cunoaste nici macar capacitatea si da eroare la accesarea acestei propietati desi el exista. S-au dus pe apa sambatei toate principiile academice-strousstrupiene ?!

In alta limbaje, chestia asta este rezolvata foarte elegant:
import java.util.*;
public class Vector_demo {
public static void main(String[] arg)
{

	 // create default vector
	 Vector v = new Vector();
	 System.out.println(v.capacity()); //10
}
}

Adica atunci cand instantiezi un obiect gol de tip vector i se rezerva capacitatea initala de 10.
Ei asa da, asta container.


Quote

Si unde ai definit vreun obiect, in exemplele tale? Nici macar nu te intreb de relatiile dintre obiecte, ca aici deja iti trebuie doua.
In toate examplele date de mine sunt numai pe obiecte, absolut tot codul pe care l-am scris sunt numai obiecte. Te rog frumos sa te uit peste el si sa incerci sa intelegi
ce inseamna obiect, clasa, si ca business-logicul este motivul pt care se creaza o clasa care este folosita pt a instantia obiecte.
Faptul ca nu iti dai seama ce este un obiect se datoreaza ca ai invatat mecanic OOP si nu prin OOAD https://en.wikipedia...ysis_and_design

Iti recomand un curs de OOAD: https://www.amazon.c...tackoverfl08-20
Vei privi OOP-ul cu totul altfel dupa un curs OOAD

Food for thought:
daca ai avea de modelat in paradigma OOP urmatorul business-logic: Vizionarea pe tv a unui clip video folosind un disc blue-ray :
1.care sunt clasele  necesare pt implementarea acestui businees-logic
2.care sunt relatiile dintre aceste clase
3. Dpdv al business-logicul expus mai sus , obiectul dvd-player ca entiate de sine statatoare, este un obiect valid sau nu ?

Quote

Ca sa ajungi in lumea academica trebuie sa treci de liceu. Extemporale pe hartie corectate cu rosu si notate de profesor, ziceai?
Iar ca sa ajungi la software-ul de productie  unde suntem noi, trebuie sa treci de lumea academica si sa inveti noi discipline care te maturizeaza astfel incat codul tau sa produca
bani.

Edited by Iulius-Foyas, 03 May 2019 - 10:50.


#57
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

View PostIulius-Foyas, on 03 mai 2019 - 10:49, said:

Se reculeaza asa de mult capacitatea aia incat la un vector gol da eroare daca accesezi acea propietate.  Asa cum reiese mai jos:
int main()
{
std::vector<int> myvector;
cout << myvector.capacity; //Compiler Error C3867
return 0;
}

Adica un vector gol nu-si cunoaste nici macar capacitatea si da eroare la accesarea acestei propietati desi el exista. S-au dus pe apa sambatei toate principiile academice-strousstrupiene ?!
Evident ca da eroare de compilare, corect este:
int main()
{
std::vector<int> myvector;
cout << myvector.capacity();
return 0;
}

pentru ca acest vector::capacity() este o functie. Iata cum iar iti scapa un lucru absolut elementar.
Iar daca apelezi vector::capacity() rezultatul este, complet previzibil, 0. Pentru ca nu ai rezervat capacitate.

View PostIulius-Foyas, on 03 mai 2019 - 10:49, said:

Iar ca sa ajungi la software-ul de productie  unde suntem noi
Voi fiind... tu si cu tine?
Ti-ai aratat extrem de clar nivelul, domnule extemporal pe hartie. N-are sens sa-mi mai bat capul cu tine.

Edited by TS030, 03 May 2019 - 11:15.


#58
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005
el si celalalt oracol

#59
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostTS030, on 03 mai 2019 - 11:18, said:

Evident ca da eroare de compilare, corect este:
int main()
{
std::vector<int> myvector;
cout << myvector.capacity();
return 0;
}

pentru ca acest vector::capacity() este o functie. Iata cum iar iti scapa un lucru absolut elementar.
Atunci  de ce editorul Microsoft Visual Studio nu se plange daca scriu myvector.capacity ? din moment ce capacity nu ar exista ci ar exista doar  functia capacity() ?
De ce nu-mi semnalizeaza cu rosu linia myvector.capacity  ? Daca variabila capacity nu exista ?

Attached File  stupid_capacity.PNG   30.77K   7 downloads

Quote

Ti-ai aratat extrem de clar nivelul, domnule extemporal pe hartie. N-are sens sa-mi mai bat capul cu tine.
Exact n-are, acum te rog citeste cursul ala de OOAD.

#60
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostIulius-Foyas, on 03 mai 2019 - 12:29, said:

Atunci  de ce editorul Microsoft Visual Studio nu se plange daca scriu myvector.capacity
Pleaca de la premiza ca ai fi competent.

#61
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
In OOP daca scriu myobject.do_that,  insemana ca  instanta myobject are  un camp numit do_that care este public.
In OOP daca scriu myobject.do_that() inseamna ca instanta myobject are o  o functie  numita do_that() care este publica.
Adica in OOP avem:
public class MyObject(){
   public  int do_that  = 0; // camp de clasa

   //....alt cod 

  public void do_that() {
	   //citire din baza de date, orice altceva 
   }
}

Ghici cum se apeleaza in OOP ambele entitati ? Uite asa  cu penitudine competenta:

   MyObject myobject =  new MyObject(); 
   myobject.do_that;  // este un int
  myobject.do_that(); // citesc din baza de date

Asta spune un cod de plenitudine competenta.

Ia uite pana si Visual Studio va contrazice: Intelisensului imi spune ca dpdv al OOP exista doar campul public capacity.
Attached File  bad_intellisense.png   24.47K   13 downloads

Edited by Iulius-Foyas, 03 May 2019 - 12:42.


#62
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,557
  • Înscris: 06.03.2016

View PostIulius-Foyas, on 03 mai 2019 - 12:29, said:

Atunci  de ce editorul Microsoft Visual Studio nu se plange daca scriu myvector.capacity ? din moment ce capacity nu ar exista ci ar exista doar  functia capacity() ?
De ce nu-mi semnalizeaza cu rosu linia myvector.capacity  ? Daca variabila capacity nu exista ?

Attachment stupid_capacity.PNG


Exact n-are, acum te rog citeste cursul ala de OOAD.
Suportul C++ pentru IntelliSense nu e atât de dezvoltat cum e la limbajele .NET spre exemplu. Dar comparația asta nici nu are sens, IDE-ul până la urmă e doar o unealtă.
Cunoștințele sunt la tine.

#63
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

Quote

Cunoștințele sunt la tine.
Exact, citeste mai sus ca am scris ce inseamna in OOP myobject.do_that si myobject.do_that().
Este o diferenta de la cer la pamant.
Faptul ca insusi cele mai bune IDE-urile induc in eroare, asta spune enorm de multe despre acest limbaj.

Deci atentie ca in OOP-ul real, myobject.do_that si myobject.do_that() reprezinta lucruri total diferite si pot face de asemni si lucrui diferite.
De asemeni nu inteleg cum un editor cum este Microsoft Visual Studio care mai este si cu licenta si costa bani, nu poate face ce fac IDE-uri gratis precum Eclipse sau varianta gratuita a lui InteliJ Idea

Edited by Iulius-Foyas, 03 May 2019 - 12:49.


#64
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009

View PostIulius-Foyas, on 03 mai 2019 - 12:37, said:

Ia uite pana si Visual Studio va contrazice: Intelisensului imi spune ca dpdv al OOP exista doar campul public capacity.
Attachment bad_intellisense.png

IDE-ul îți arată funcția capacity() !

#65
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostIulius-Foyas, on 03 mai 2019 - 12:44, said:

Exact, citeste mai sus ca am scris ce inseamna in OOP myobject.do_that si myobject.do_that().
Este o diferenta de la cer la pamant.
Faptul ca insusi cele mai bune IDE-urile induc in eroare, asta spune enorm de multe despre acest limbaj.

Deci atentie ca in OOP-ul real, myobject.do_that si myobject.do_that() reprezinta lucruri total diferite si pot face de asemni si lucrui diferite.
De asemeni nu inteleg cum un editor cum este Microsoft Visual Studio care mai este si cu licenta si costa bani, nu poate face ce fac IDE-uri gratis precum Eclipse sau varianta gratuita a lui InteliJ Idea
Hai lasa smiorcaiala, ca acest topic nu este despre un limbaj anume. "Multa munca in constructor" este o discutie valida in foarte multe limbaje.

#66
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
In programarea reala daca nu ai incredere in IDE-ul  pe care il folosesti you are f....d ! Si stii de ce ? Pentru ca ai nevoie de o scula IDE de incredere atunci cand folosesti de API-uri noi, mai ales in intelisense-ul IDE-uui ca dezvoltarea sa merga rapid si IDE-ul sa nu te induca in eroare pt ca "Suportul  limbajului X pentru IntelliSense nu e atât de dezvoltat"

View Posttavitu, on 03 mai 2019 - 12:50, said:


IDE-ul îți arată funcția capacity() !
Nu, IDE-ul iimi arata in intelisense campul public capacity.

#67
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
IDE-ul si functiile lui n-au nici o legatura cu limbajul. Visual Studio e ca un retardat oligofren pe linga IntelliJ. De multe ori imi arata chestii subliniate cu rosu pina dau compile, apoi se trezeste si le arata corect.

Asta nu inseamna ca trebuie sa te uiti dupa culori si sublinieri, trebuie sa citesti codul...

#68
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009

View PostIulius-Foyas, on 03 mai 2019 - 12:53, said:

Nu, IDE-ul iimi arata in intelisense campul public capacity.
Nu, uită-te mai atent, zice std::vector<int>::capacity() <- parantezele pe care le afișează denotă că este o funcție, nu câmp public.

Edited by tavitu, 03 May 2019 - 12:56.


#69
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,557
  • Înscris: 06.03.2016

View PostIulius-Foyas, on 03 mai 2019 - 12:44, said:

Exact, citeste mai sus ca am scris ce inseamna in OOP myobject.do_that si myobject.do_that().
Este o diferenta de la cer la pamant.
Faptul ca insusi cele mai bune IDE-urile induc in eroare, asta spune enorm de multe despre acest limbaj.

Deci atentie ca in OOP-ul real, myobject.do_that si myobject.do_that() reprezinta lucruri total diferite si pot face de asemni si lucrui diferite.
De asemeni nu inteleg cum un editor cum este Microsoft Visual Studio care mai este si cu licenta si costa bani, nu poate face ce fac IDE-uri gratis precum Eclipse sau varianta gratuita a lui InteliJ Idea
VS tratează așa toate funcțiile în câmpul de autocompletare.
Se poate observa în partea dreaptă că "capacity" este o funcție care returnează un size_t.

Attached Files


Edited by red46, 03 May 2019 - 13:19.


#70
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostMosotti, on 03 mai 2019 - 12:55, said:

IDE-ul si functiile lui n-au nici o legatura cu limbajul. Visual Studio e ca un retardat oligofren pe linga IntelliJ. De multe ori imi arata chestii subliniate cu rosu pina dau compile, apoi se trezeste si le arata corect.

Asta nu inseamna ca trebuie sa te uiti dupa culori si sublinieri, trebuie sa citesti codul...
Adica vrei sa spui ca trebuie sa ma duc pe pagina de documentatie a limbajului respectiv si sa ma uit la paginile cu documentatie , in paralel ce am si IDE-ul deschis.

#71
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009

View PostIulius-Foyas, on 03 mai 2019 - 12:58, said:

Adica vrei sa spui ca trebuie sa ma duc pe pagina de documentatie a limbajului respectiv si sa ma uit la paginile cu documentatie , in paralel ce am si IDE-ul deschis.
Da! Dacă este prima dată când folosești o funcție sau o clasă, da!

Edited by tavitu, 03 May 2019 - 13:00.


#72
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostOriginalCopy, on 03 mai 2019 - 12:51, said:

Hai lasa smiorcaiala, ca acest topic nu este despre un limbaj anume. "Multa munca in constructor" este o discutie valida in foarte multe limbaje.
Yes sir, chiar acum imi repet ca o mantra "daca pot sa apelez orice metoda publica  in orice mod atunci obiectul este valid" si imi apare in minte faptul ca
la un vector nu pot sa apelez metoda .at(index) fara sa-l populez mai intai si ma intreb: este un vector gol un obiect valid din moment ce contrazice aceasta mantra ?

View Posttavitu, on 03 mai 2019 - 12:59, said:

Da! Dacă este prima dată când folosești o funcție sau o clasă, da!
Ok, ar trebui sa folosesti InteliJ sau Eclipse si nu mai ai nevoie de asa ceva, cel putin pentru java intelisensul merge super si daca pui mouse-ul desupra metodei iti arata si documentatia metodei.

Edited by Iulius-Foyas, 03 May 2019 - 13:07.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate