Obvykle se k tomu použijí dva gettery (i když je, jak známo, sám nepoužívám) nebo použiješ jeden messenger. Také můžeš požadovanou operaci udělat uvnitř objektu a žádné dvě hodnoty ven nebudeš muset vytahovat.
Dva gettery mohu použít, pokud je to nějaká relativně jednoduchá operace. Ale často má člověk složitý processing, jehož výsledkem je víc hodnot a psát a volat ho x-krát by znamenalo duplikaci kódu i zbytečně strávený procesorový čas.
O messengeru jsem psal. Vede zbytečnému kódu navíc => méně přehledný program => prasárna.
Tuples by byly dobré, _pokud_ by v Javě měly rozumnou podporu na úrovni jazyka a nemuselo se to z nich tahat ručně. Ale psát program stylem "vím, že na nultém indexu je součet a na prvním počet" je ultra prasárna, to mi nikdo nevymluví.
Uvnitř objektu: To je použitelné opět jen v hodně malém množství příkladů.
Pokud je výsledkem vektor [x, y], tak to prasečina být nemusí. Prasečinou je požadovat po jedné metodě výstup dvou nesouvisejících hodnot.
Speciálně proto jsem psal ten příklad s výstupem "počet" a "součet", aby bylo jasné, že se mi nejedná o tenhle případ s vektorem. Ale počet a součet jsou související hodnoty. Viz výše - typicky to potřebuješ pokud máš nějaký netriviální processing a rozepisovat to do víc metod by bylo nevhodné.
Tak tohle je prasečina. Je to převzato z C/C++, kde to jinak nejde. Uvědom si, že to jsou procedurální jazyky, zatímco Java a C# jsou objektové. Jsou to různá paradigmata.
Velmi snadno to však můžeš udělat i v Javě. Stačí místo int použít Integer.
Takže žádný reálný argument (vyžaduje více kódu, je nepřehledné, vede k chybám, ...), jen kecy. Když tam místo int napíšu Integer, tak to sice bude "objektové" (takže OK?), ale nijak si nepomůžu, protože přiřazením do parametru se ta proměnná ve volající funkci nezmění.