{"id":1391,"date":"2021-03-01T13:21:31","date_gmt":"2021-03-01T13:21:31","guid":{"rendered":"https:\/\/www.juniorjavadeveloper.pl\/?p=1391"},"modified":"2023-11-21T17:53:40","modified_gmt":"2023-11-21T17:53:40","slug":"gdzie-co-uzyc-w-kodzie-pulapka-metody-main-junior-java-developer","status":"publish","type":"post","link":"https:\/\/www.juniorjavadeveloper.pl\/en\/2021\/03\/01\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main-junior-java-developer\/","title":{"rendered":"Where and what to use in the code? The trap of the main() method \u2013 Junior Java Developer"},"content":{"rendered":"<p class=\"has-large-font-size wp-block-paragraph\">You are probably wondering how to use the theoretical knowledge acquired either during an online course or at a Bootcamp. In this article, I will try to explain how to practically use the knowledge of Java that you have acquired while learning. I will also show you how to avoid the trap that we set for ourselves, which is creating the entire code in one class with the main() method.<\/p>\n\n\n    <style>\r\n        .wpj-jtoc.--jtoc-theme-basic-light.--jtoc-has-custom-styles {\r\n            --jtoc-numeration-suffix: \". \";\n--jtoc-numeration-color: #adadad;\n        }\r\n\r\n            <\/style>\r\n\r\n\r\n\r\n<div id=\"wpj-jtoc\" class=\"wpj-jtoc wpj-jtoc--main --jtoc-the-content --jtoc-theme-basic-light --jtoc-title-align-left --jtoc-toggle-icon --jtoc-toggle-position-right --jtoc-toggle-1 --jtoc-has-numeration --jtoc-has-custom-styles --jtoc-is-unfolded\" >\r\n\r\n    \r\n    <!-- TOC -->\r\n    <div class=\"wpj-jtoc--toc\">\r\n                                <div class=\"wpj-jtoc--header\">\r\n                <div class=\"wpj-jtoc--header-main\">\r\n                                        <div class=\"wpj-jtoc--title\">\r\n                        <span class=\"wpj-jtoc--title-label\">Table of Contents<\/span>\r\n                    <\/div>\r\n                                                                <div class=\"wpj-jtoc--toggle-wrap\">\r\n                                                                                                                    <div class=\"wpj-jtoc--toggle-box\">\r\n                                    <div class=\"wpj-jtoc--toggle\"><\/div>\r\n                                <\/div>\r\n                                                    <\/div>\r\n                                    <\/div>\r\n            <\/div>\r\n                            <div class=\"wpj-jtoc--body\">\r\n                        <nav class=\"wpj-jtoc--nav\">\r\n                <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#cztery-kluczowe-elementy-z-ktorych-nalezy-zdac-sobie-sprawe\" title=\"Four key elements to be aware of\" data-numeration=\"1\">Four key elements to be aware of<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#kroki-umozliwiajace-przejscie-z-all-in-one-do-solidnego-kodu-aplikacji\" title=\"Steps to transition from all-in-one to S.O.L.I.D. application code\" data-numeration=\"2\">Steps to transition from all-in-one to S.O.L.I.D. application code<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#krok-1-przeniesienie-logiki-obliczen-algorytmow-do-oddzielnej-klasy\" title=\"Step 1. Moving the logic, calculations, algorithms to a separate class\" data-numeration=\"2.1\">Step 1. Moving the logic, calculations, algorithms to a separate class<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h4\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"4\">\r\n                <a href=\"#calculatorphaseone\" title=\"CalculatorPhaseOne\" data-numeration=\"2.1.1\">CalculatorPhaseOne<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#krok-2-utworzenie-klasy-przechowujacej-przenoszacej-dane\" title=\"Step 2. Creating a class for storing and transferring data\" data-numeration=\"2.2\">Step 2. Creating a class for storing and transferring data<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h4\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"4\">\r\n                <a href=\"#calculatorinputdata\" title=\"CalculatorInputData\" data-numeration=\"2.2.1\">CalculatorInputData<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#krok-3-stworzenie-klasy-przechowujacej-zwracane-wyniki\" title=\"Step 3. Creating a class that stores the returned results\" data-numeration=\"2.3\">Step 3. Creating a class that stores the returned results<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h4\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"4\">\r\n                <a href=\"#calculatorresultdata\" title=\"CalculatorResultData\" data-numeration=\"2.3.1\">CalculatorResultData<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#podsumowanie\" title=\"Summary\" data-numeration=\"2.4\">Summary<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><\/ol>            <\/nav>\r\n                    <\/div>\r\n    <\/div>\r\n<\/div>\r\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">O tym, &#380;e sam j&#281;zyk Java nie wystarczy ju&#380; pisa&#322;em &ndash; <a rel=\"noreferrer noopener\" href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/2020\/01\/04\/czy-sam-jezyk-java-wystarczy\/\" data-type=\"URL\" data-id=\"https:\/\/www.juniorjavadeveloper.pl\/2020\/01\/04\/czy-sam-jezyk-java-wystarczy\/\" target=\"_blank\">Czy sam j&#281;zyk Java wystarczy?<\/a>. Teraz poka&#380;&#281; na przyk&#322;adzie jak przeku&#263; zdobyt&#261; wiedz&#281; na dzia&#322;aj&#261;cy program w j&#281;zyku Java. Na pocz&#261;tek u&#380;yj&#281; analogii, tak samo jak w przypadku matematyki sama znajomo&#347;&#263; wzor&oacute;w i twierdze&#324; matematycznych nie czyni z nas matematyk&oacute;w-praktyk&oacute;w, kt&oacute;rzy wiedz&#261; jak zastosowa&#263; np. twierdzenie Pitagorasa do wyznaczania odleg&#322;o&#347;ci mi&#281;dzy dwoma punktami na osi wsp&oacute;&#322;rz&#281;dnych. To samo tyczy si&#281; programowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"cztery-kluczowe-elementy-z-ktorych-nalezy-zdac-sobie-sprawe\">Cztery kluczowe elementy, z kt&oacute;rych nale&#380;y zda&#263; sobie spraw&#281;<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"has-large-font-size\">Nie umieszczamy ca&#322;ego kodu w metodzie main().<\/li>\n\n\n\n<li class=\"has-large-font-size\">Jedna klasa z metod&#261; main(), to za ma&#322;o.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Wypiszmy w konsoli dzia&#322;anie aplikacji.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Dobry program, aplikacja powinna mie&#263; wiele klas i pakiet&oacute;w.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Na przyk&#322;adzie prostej implementacji kalkulatora poka&#380;e proces przej&#347;cia z &ldquo;ca&#322;ego kodu w metodzie main()&rdquo; do kilku klas, kt&oacute;re s&#261; &#322;atwiejsze w czytaniu i utrzymaniu. Ka&#380;dy z krok&oacute;w om&oacute;wi&#281; szczeg&oacute;&#322;owo poni&#380;ej. <\/p>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"kroki-umozliwiajace-przejscie-z-all-in-one-do-solidnego-kodu-aplikacji\">Kroki umo&#380;liwiaj&#261;ce przej&#347;cie z all-in-one do S.O.L.I.D.nego kodu aplikacji<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"has-large-font-size\">Przeniesienie logiki, oblicze&#324;, algorytm&oacute;w do oddzielnej klasy &ndash; CalculatorPhaseX.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Utworzenie klasy przechowuj&#261;cej, przenosz&#261;cej dane &ndash; CalculatorInputData.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Stworzenie klasy przechowuj&#261;cej zwracane wyniki &ndash; CalculatorResultData.<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"16-19\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.Scanner;\n\npublic class MainCalculator {\n    public static void main(String[] args) {\n        Scanner scanner = new Scanner(System.in);\n\n        System.out.println(\"Podaj pierwsz&#261; liczb&#281;:\");\n        int a = scanner.nextInt();\n        System.out.println(\"Podaj drug&#261; liczb&#281;:\");\n        int b = scanner.nextInt();\n\n        System.out.println(\"Jakie dzia&#322;anie wykona&#263;?\");\n        System.out.println(\"1. Dodawanie\");\n        int operation = scanner.nextInt();\n\n        int result = 0;\n        if (operation == 1) {\n            result = a + b;\n        }\n        System.out.println(\"Wynik dzia&#322;ania: \" + result);\n    }\n}<\/pre>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Powy&#380;szy kod pokazuje program, aplikacj&#281;, kt&oacute;ra dzia&#322;a jak kalkulator. U&#380;ytkownik jest proszony o podanie dw&oacute;ch liczb <strong>scanner.nextInt()<\/strong> oraz dzia&#322;ania <strong>scanner.nextInt()<\/strong>, kt&oacute;re chce wykona&#263; na wprowadzonych liczbach. Dla uproszczenia prezentowany kalkulator wykonuje tylko dodawanie <strong>result = a + b;<\/strong>, analogicznie mo&#380;na napisa&#263; metody dla innych dzia&#322;a&#324; matematycznych np. odejmowanie, mno&#380;enie itp.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-1024x558.png\" alt=\"Wynik dzia&#322;ania CalculatorMain - pu&#322;apka metody main()\" class=\"wp-image-1430\" srcset=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-1024x558.png 1024w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-300x163.png 300w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-768x418.png 768w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-1536x837.png 1536w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-1600x872.png 1600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-1000x545.png 1000w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-800x436.png 800w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-600x327.png 600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00-400x218.png 400w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_00.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Wynik dzialania CalculatorMain &ndash; pulpka metody main()<\/figcaption><\/figure>\n\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"krok-1-przeniesienie-logiki-obliczen-algorytmow-do-oddzielnej-klasy\">Krok 1. Przeniesienie logiki, oblicze&#324;, algorytm&oacute;w do oddzielnej klasy<\/h3>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"calculatorphaseone\">CalculatorPhaseOne<\/h4>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Z racji tego, &#380;e metoda main() zaczyna &ldquo;rosn&#261;&#263;&rdquo; trzeba zastanowi&#263; si&#281; nad wydzieleniem kodu do innej klasy. Mo&#380;na przyj&#261;&#263;, &#380;e metoda powinna mie&#263; maksymalnie 5-6 linijek &ndash; wed&#322;ug Uncle Bob Robert C. Martin (<a rel=\"noreferrer noopener\" href=\"https:\/\/helion.pl\/ksiazki\/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm\" data-type=\"URL\" data-id=\"https:\/\/helion.pl\/ksiazki\/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm\" target=\"_blank\">Czysty kod. Podr&#281;cznik dobrego programisty<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/codingsans.com\/blog\/clean-code\" data-type=\"URL\" data-id=\"https:\/\/codingsans.com\/blog\/clean-code\" target=\"_blank\">Clean Code<\/a>). <\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">W takim razie zabieramy si&#281; za stworzenie nowej klasy z dedykowan&#261; metod&#261; dla operacji kalkulatora.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CalculatorPhaseOne {\n    public static int sum(int a, int b) {\n        System.out.println(\"sum(\" + a + \", \" + b + \")\");\n        int sum = a + b;\n        System.out.println(\"sum=\" + sum);\n        return sum;\n    }\n}<\/pre>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Powy&#380;szy kod klasy <strong>CalculatorPhaseOne<\/strong> zawiera statyczn&#261; metod&#281; <strong>sum(int a, int b)<\/strong>. Dlaczego metoda statyczna? Po to, aby nie trzeba by&#322;o tworzy&#263; obiektu, a nast&#281;pnie wywo&#322;ywa&#263; metody <strong>CalculatorPhaseOne calculator = new CalculatorPhaseOne(); calculator.sum(1, 2);<\/strong>. Dzi&#281;ki metodzie statycznej mo&#380;emy od razu wywo&#322;a&#263; metod&#281; na rzecz klasy <strong>CalculatorPhaseOne.sum(1, 2);<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = a + b;<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = CalculatorPhaseOne.sum(a, b);<\/pre>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-1024x558.png\" alt=\"Wynik dzia&#322;ania CalculatorMain - przeniesienie logiki, oblicze&#324;, algorytm&oacute;w do oddzielnej klasy\" class=\"wp-image-1434\" srcset=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-1024x558.png 1024w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-300x164.png 300w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-768x419.png 768w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-1536x838.png 1536w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-1600x873.png 1600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-1000x545.png 1000w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-800x436.png 800w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-600x327.png 600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01-400x218.png 400w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_01.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Wynik dzialania CalculatorMain &ndash; przeniesienie logiki, obliczen, algorytmow do oddzielnej klasy<\/figcaption><\/figure>\n\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"krok-2-utworzenie-klasy-przechowujacej-przenoszacej-dane\">Krok 2. Utworzenie klasy przechowuj&#261;cej, przenosz&#261;cej dane<\/h3>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"calculatorinputdata\">CalculatorInputData<\/h4>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Przyj&#281;&#322;o si&#281;, &#380;e metody, konstruktory, kt&oacute;re maj&#261; wi&#281;cej ni&#380; pi&#281;&#263; parametr&oacute;w s&#261; oznak&#261; z&#322;ego kodu. Dla takich metod i konstruktor&oacute;w tworzy si&#281; parametry, kt&oacute;re s&#261; w&#322;asnymi klasami przechowuj&#261;cymi dane. Warto zastanowi&#263; si&#281; nad stosowaniem tej regu&#322;y dla dw&oacute;ch i wi&#281;cej parametr&oacute;w. Poni&#380;sza klasa <strong>CalculatorInputData<\/strong> zawiera dane, kt&oacute;re wcze&#347;niej by&#322;y oddzielnie przesy&#322;ane do metody <strong>public static int sum(int a, int b)<\/strong>. <\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Co daje utworzenie oddzielnej klasy jako typu parametru metody? Po pierwsze mamy porz&#261;dek w parametrach metody, po drugie bez zmieniania parametr&oacute;w metody mo&#380;emy w &#322;atwy spos&oacute;b doda&#263; lub usun&#261;&#263; dowolny element do klasy, czyli nasza metoda jest bardziej &ldquo;elastyczna&rdquo;, a tym samym odporna na zmiany.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CalculatorInputData {\n    private int a;\n    private int b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    @Override\n    public String toString() {\n        return \"CalculatorInputData{\" +\n                \"a=\" + a +\n                \", b=\" + b +\n                '}';\n    }\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"4\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CalculatorPhaseTwo {\n    public static int sum(CalculatorInputData inputData) {\n        System.out.println(\"sum(\" + inputData + \")\");\n        int sum = inputData.getA() + inputData.getB();\n        System.out.println(\"sum=\" + sum);\n        return sum;\n    }\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CalculatorInputData inputData = new CalculatorInputData();\ninputData.setA(a);\ninputData.setB(b);\n\nresult = CalculatorPhaseTwo.sum(inputData);<\/pre>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-1024x558.png\" alt=\"Wynik dzia&#322;ania CalculatorMain - utworzenie klasy przechowuj&#261;cej, przenosz&#261;cej dane\" class=\"wp-image-1438\" srcset=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-1024x558.png 1024w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-300x164.png 300w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-768x419.png 768w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-1536x838.png 1536w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-1600x873.png 1600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-1000x545.png 1000w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-800x436.png 800w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-600x327.png 600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02-400x218.png 400w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_02.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Wynik dzialania CalculatorMain &ndash; utworzenie klasy przechowujacej, przenoszacej dane<\/figcaption><\/figure>\n\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"krok-3-stworzenie-klasy-przechowujacej-zwracane-wyniki\">Krok 3. Stworzenie klasy przechowuj&#261;cej zwracane wyniki<\/h3>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"calculatorresultdata\">CalculatorResultData<\/h4>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Skoro metody jako typ parametr&oacute;w wykorzystuj&#261; w&#322;asne klasy, to czemu nie stworzy&#263; w&#322;asnego typu dla warto&#347;ci zwracanej z metody? <\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Co daje utworzenie oddzielnej klasy dla warto&#347;ci zwracanej z metody? Po pierwsze mamy porz&#261;dek w metodzie, po drugie bez zmieniania typu zwracanego metody mo&#380;emy w &#322;atwy spos&oacute;b doda&#263; lub usun&#261;&#263; dowolny pola w klasie zwracanej, czyli nasza metoda jest bardziej &ldquo;elastyczna&rdquo;, a tym samym odporna na zmiany.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CalculatorResultData {\n    private int result;\n\n    public int getResult() {\n        return result;\n    }\n\n    public void setResult(int result) {\n        this.result = result;\n    }\n\n    @Override\n    public String toString() {\n        return \"CalculatorResultData{\" +\n                \"result=\" + result +\n                '}';\n    }\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = CalculatorPhaseTwo.sum(inputData);\nCalculatorResultData resultData = new CalculatorResultData();\nresultData.setResult(result);<\/pre>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-1024x559.png\" alt=\"Wynik dzia&#322;ania CalculatorMain - stworzenie klasy przechowuj&#261;cej zwracane wyniki\" class=\"wp-image-1440\" srcset=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-1024x559.png 1024w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-300x164.png 300w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-768x419.png 768w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-1536x838.png 1536w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-1600x873.png 1600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-1000x546.png 1000w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-800x437.png 800w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-600x328.png 600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03-400x218.png 400w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_03.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Wynik dzialania CalculatorMain &ndash; stworzenie klasy przechowujacej zwracane wyniki<\/figcaption><\/figure>\n\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Dodatkowo na ka&#380;dym, etapie nasza aplikacja powinna &ldquo;informowa&#263; nas, co robi&rdquo;, czyli wypisywa&#263;, logowa&#263; na konsoli i\/lub do pliku swoje dzia&#322;anie. Zalecam wypisywanie, logowanie wej&#347;cia i wyj&#347;cia dla ka&#380;dej metody publicznej w klasach. Dla uproszczenia logowanie odbywa si&#281; na konsol&#281; za pomoc&#261; <strong>System.out.println(&ldquo;sum(&rdquo; + a + &ldquo;, &rdquo; + b + &ldquo;)&rdquo;);<\/strong>, docelowo System.out trzeba b&#281;dzie zast&#261;pi&#263; wyspecjalizowan&#261; klas&#261; <strong>Logger<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2,6\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">    public static CalculatorResultData sum(CalculatorInputData inputData) {\n        System.out.println(\"sum(\" + inputData + \")\");\n        int sum = inputData.getA() + inputData.getB();\n        CalculatorResultData resultData = new CalculatorResultData();\n        resultData.setResult(sum);\n        System.out.println(\"resultData=\" + resultData);\n        return resultData;\n    }<\/pre>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-1024x558.png\" alt=\"Wynik dzia&#322;ania CalculatorPhaseThree - wypisywanie, logowanie wej&#347;cia i wyj&#347;cia dla metody publicznej\" class=\"wp-image-1442\" srcset=\"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-1024x558.png 1024w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-300x164.png 300w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-768x419.png 768w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-1536x838.png 1536w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-1600x873.png 1600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-1000x545.png 1000w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-800x436.png 800w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-600x327.png 600w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04-400x218.png 400w, https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_04.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><figcaption class=\"wp-element-caption\">Wynik dzialania CalculatorPhaseThree &ndash; wypisywanie, logowanie wejscia i wyjscia dla metody publicznej<\/figcaption><\/figure>\n\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"podsumowanie\">Summary<\/h3>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Powy&#380;szy przyk&#322;ad pokazuje jak w prosty spos&oacute;b wyj&#347;&#263; z pu&#322;apki metody main(). Oczywi&#347;cie powy&#380;szy schemat mo&#380;na zastosowa&#263; do wi&#281;kszych aplikacji pisanych w Java. Dla przypomnienia najwa&#380;niejsze, to stworzy&#263; wi&#281;cej ni&#380; jedn&#261; klas&#281; w aplikacji i dzia&#322;a&#263; zgodnie z SOLID. <\/p>\n\n\n\n<ol class=\"wp-block-list\" id=\"block-47a233b5-276b-42e9-ac10-2842e875fe4c\">\n<li class=\"has-large-font-size\">Przeniesienie logiki, oblicze&#324;, algorytm&oacute;w do oddzielnej klasy.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Utworzenie klasy przechowuj&#261;cej, przenosz&#261;cej dane.<\/li>\n\n\n\n<li class=\"has-large-font-size\">Stworzenie klasy przechowuj&#261;cej zwracane wyniki.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Ca&#322;o&#347;&#263; kodu mo&#380;na znale&#378;&#263; na: <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/juniorjavadeveloper-pl\/java-what-where-in-the-code\" target=\"_blank\">https:\/\/github.com\/juniorjavadeveloper-pl\/java-what-where-in-the-code<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-dla-przysz-ych-junior-java-developer-039-w wp-block-embed-poradnik-dla-przysz-ych-junior-java-developer-039-w\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"IJBY9ZR7hM\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/kontakt\/\">Contact<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Kontakt&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/kontakt\/embed\/#?secret=HedbOPk8ms#?secret=IJBY9ZR7hM\" data-secret=\"IJBY9ZR7hM\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-dla-przysz-ych-junior-java-developer-039-w wp-block-embed-poradnik-dla-przysz-ych-junior-java-developer-039-w\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"dg3xfAO2K9\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/mentoring-rezerwuj-termin\/\">Mentoring - book an appointment<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Mentoring &ndash; rezerwuj termin&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/mentoring-rezerwuj-termin\/embed\/#?secret=yYoooHyhkW#?secret=dg3xfAO2K9\" data-secret=\"dg3xfAO2K9\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>","protected":false},"excerpt":{"rendered":"<p>Zapewne zastanawiasz si\u0119 jak wykorzysta\u0107 teoretyczn\u0105 wiedz\u0119 zdobyt\u0105 czy, to na kursie online czy na Bootcamp. W tym artykule postaram si\u0119 wyja\u015bni\u0107 jak w praktyce wykorzysta\u0107 t\u0119 wiedz\u0119 z j\u0119zyka Java, kt\u00f3r\u0105 przyswoili\u015bcie sobie w trakcie nauki. Poka\u017c\u0119 r\u00f3wnie\u017c jak unikn\u0105\u0107 pu\u0142apki, kt\u00f3r\u0105 sami na siebie ustawiamy, t\u0105 pu\u0142apk\u0105 jest tworzenie ca\u0142ego kodu w jednej [&hellip;]<\/p>","protected":false},"author":1,"featured_media":1449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_ppp_document_settings_meta":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[3,2,7],"tags":[],"class_list":["post-1391","post","type-post","status-publish","format-standard","has-post-thumbnail","category-kod-java","category-poczatkujacy","category-poradnik"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2021\/03\/gdzie-co-uzyc-w-kodzie-pulapka-metody-main_naglowek-ss.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/1391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/comments?post=1391"}],"version-history":[{"count":48,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/1391\/revisions"}],"predecessor-version":[{"id":3748,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/1391\/revisions\/3748"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media\/1449"}],"wp:attachment":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media?parent=1391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/categories?post=1391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/tags?post=1391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}