๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

์ž๋ฐ”13

[JAVA] ์˜ˆ์™ธ Exception ๐Ÿšจ ์˜ค๋ฅ˜ Error ์ปดํŒŒ์ผ ์˜ค๋ฅ˜: ๋ฌธ๋ฒ•(Syntax)์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ƒํƒœ ์‹คํ–‰์˜ค๋ฅ˜(Runtime Error) ์—๋Ÿฌ: ์‹œ์Šคํ…œ์ด ์ •์ƒ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ – ์ˆ˜์Šต ๋ถˆ๊ฐ€ ์˜ˆ์™ธ: ์‹คํ–‰ ์ค‘ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ ๋ฐœ์ƒํ•œ ์ƒํƒœ – ์ˆ˜์Šต ๊ฐ€๋Šฅ ๋…ผ๋ฆฌ์˜ค๋ฅ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์‚ฐ์ถœ๋˜์ง€ ์•Š์€ ์ƒํƒœ Exception: ์˜ˆ์™ธ ์ž˜๋ชป๋œ ์‚ฌ์šฉ, ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜์ด๋‹ค. ์ผ๋ฐ˜ ์˜ˆ์™ธ(Exception): ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค. ์‹คํ–‰ ์˜ˆ์™ธ(Runtime Exception): ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š” ์˜ˆ์™ธ์ด๋‹ค. ๐Ÿ›  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ข…๋ฃŒ๋ฅผ ๋ฐฉ์ง€ํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ •์ƒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. try{ // ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์ฝ”๋“œ ์ž‘์„ฑ } catch(Exception.. 2023. 12. 20.
[JAVA] Singleton Pattern ๐Ÿ“ข Singleton Pattern ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด: ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ ํ•˜๋„๋ก ํ•˜๋ฉฐ, ์ƒ์„ฑ๋œ ํ•œ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์–ด๋””์—์„œ๋“ ์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ์„ ํด๋ž˜์Šค์•ˆ์—์„œ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์™ธ๋ถ€์—๋Š” ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ์ž๋Š” private๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. public class DuckManager { private static DuckManager manager = new DuckManager(); private Duck[] ducks = new Duck[20]; private DuckManager() { makeDucks(); } public static DuckManager getDuckManager() { return manager; } } ๐ŸŽจ ์‚ฌ์šฉ๋ฒ• packag.. 2023. 12. 18.
[JAVA] ์ž๋ฐ” ๋ฐฐ์—ด ๐ŸŽน ์ž๋ฐ”์˜ ๋ฐฐ์—ด ์ž๋ฐ”์˜ ๋ฐฐ์—ด์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด์ด ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ฌถ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด๋ช…์—๋Š” ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์šฐ๋‹ˆ ์‹œ์ž‘์ฃผ์†Œ๋งŒ ์ €์žฅํ•ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. 1. ์ •์  ๋ฐฐ์—ด: ์‹คํ–‰ ๋„์ค‘ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. (์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ถˆํŽธํ•œ ๊ฒƒ 1) ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ์•Œ ๋•Œ 2) ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ฏธ์ •์ผ ๋•Œ: ์‹คํ–‰ ์‹œ ๊ฒฐ์ •๋˜๋Š” ๊ฒฝ์šฐ ๐ŸŽฏ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•ด ์ƒ์„ฑ ๐ŸŽฏ New ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑ 2. ๋™์  ๋ฐฐ์—ด: ์‹คํ–‰ ๋„์ค‘ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. (์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ ๋ถˆํŽธํ•œ ๊ฒƒ) ๐ŸŽฏ Collection Framework์—์„œ.. 2023. 12. 16.
[JAVA] ํ˜• ๋ณ€ํ™˜ ๐ŸŽŠ ๊ธฐ๋ณธํ˜•์˜ ํ˜• ๋ณ€ํ™˜ boolean์„ ์ œ์™ธํ•œ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ž์œ ๋กญ๊ฒŒ ํ˜• ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐ŸŽŠ ์ฐธ์กฐํ˜•์˜ ํ˜• ๋ณ€ํ™˜ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•œ๊ฐ€? Student student = new Member(); // ??? ๊ฐ€๋Šฅํ•œ๊ฐ€? student.sname; // X ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์›์น™์ ์œผ๋กœ (์˜ˆ์™ธ์žˆ์Œ) ์ฐธ์กฐํ˜•๋ผ๋ฆฌ์˜ ํ˜• ๋ณ€ํ™˜ ์•ˆ๋œ๋‹ค. ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ƒ์† ๊ด€๊ณ„์˜ ํด๋ž˜์Šค(์ฐธ์กฐํ˜•) ๊ฐ„์— ํ˜• ๋ณ€ํ™˜์„ ์ง€์›ํ•œ๋‹ค. ์Šˆํผํด๋ž˜์Šค์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—…์บ์ŠคํŒ…์— ํ•œํ•ด์„œ ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณ„๋„์˜ ๋ช…๋ น์–ด ์—†์ด ์•”๋ฌต์ (์ž๋™)์œผ๋กœ ์ง€์›์ด ๋œ๋‹ค. Duck dk = (Duck) new RedDuck(); ์—…์บ์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋ฉด, ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ํ™•์žฅํ•œ ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜.. 2023. 12. 16.
[JAVA] ์ž๋ฐ”์™€ GUI ๐Ÿšจ ์ž๋ฐ”๋Š” ํšจ์œจ์„ฑ ๋ฌธ์ œ๋กœ ๊ทธ๋ž˜ํ”ฝ์„ ๋‹ค๋ฃจ์ง€ ์•Š์ง€๋งŒ ํ•™์Šต์šฉ์œผ๋กœ ์ž๋ฐ”๋กœ GUI๋ฅผ ๊ฐ„๋‹จํžˆ ํ•™์Šตํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๐ŸŽจ GUI (Graphical User Interface) ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ž๋ฐ”๋Š” ์ง์ ‘์ ์œผ๋กœ GUI๊ธฐ๋ฐ˜ ๋ชจ๋“ˆ์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋žฉํ•‘ (ํฌ์žฅ)ํ•ด JVM์„ ๊ฑฐ์ณ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋งŒ ๊ฑฐ์ณ์„œ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณดํ†ต ์ž๋ฐ”์—์„œ GUI๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. ๋”๋ณด๊ธฐ ํ•˜๋“œ์›จ์–ด ์ถœ๋ ฅ์žฅ์น˜์ธ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ž˜ํ”ฝ๋‹จ์œ„๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ œ์–ดํ•œ๋‹ค. ๐Ÿ”ง ์ธํ„ฐํŽ˜์ด์Šค: ๋‘ ๊ฐœ ์ด์ƒ์˜ ์‹œ์Šคํ…œ, ์žฅ์น˜, ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๊ณ„๋‚˜ ๋งค๊ฐœ์ฒด GUI๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ ธ ๋ฌดํ•œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋น ์ง€.. 2023. 12. 16.
[JAVA] ์ž๋ฐ”์˜ ์ƒ์†๊ณผ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ ๐ŸŽฑ ์ž๋ฐ” ์ƒ์† ์„œ๋ธŒํด๋ž˜์Šค(sub class, ์ž์‹)๋Š” ์Šˆํผํด๋ž˜์Šค(super class, ๋ถ€๋ชจ)๋ฅผ ์„ ํƒํ•ด, ์Šˆํผํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ private์˜ ๊ฒฝ์šฐ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์„œ๋ธŒ ํด๋ž˜์Šค ์˜†์— extends ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์Šˆํผํด๋ž˜์Šค๋ช…์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅ(๋‹จ์ผ ์ƒ์†)ํ•˜๋ฉฐ, ์Šˆํผํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์— ๋”ํ•ด ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ฐ–๋„๋ก ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๋ณ€์ˆ˜๋Š” private๋กœ ์„ ์–ธํ•˜๊ณ  getter-setter๋กœ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ์˜ˆ์‹œ๋Š” protected๋กœ ์„ ์–ธํ•ด ๊ณต์œ ํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ๋”๋ณด๊ธฐ โœจ ์„œ๋ธŒํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ์ž๋™์œผ๋กœ super();์„ ์‹คํ–‰ํ•ด ์Šˆํผ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋ถ€๋ฅด๊ฒŒ ๋œ๋‹ค. โœจ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์•„๋‹Œ ์ธ์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋ถ€๋ฅผ ๋•Œ๋Š” super(10,20); .. 2023. 12. 15.
728x90