Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Java Overview and Object-Oriented Programming, Lecture notes of Algorithms and Programming

A comprehensive review of java, its history, features, and object-oriented programming concepts. It covers the development of java as a platform-independent language, its advantages over c++, and the basics of object-oriented programming, including classes, objects, inheritance, and polymorphism.

Typology: Lecture notes

2017/2018

Uploaded on 10/23/2018

keehwan
keehwan ๐Ÿ‡จ๐Ÿ‡ฆ

20 documents

1 / 8

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
- 17 -
์ œ2์žฅ ์ž๋ฐ” ๋ณต์Šต
์ด ์žฅ์—์„œ๋Š” ์ž๋ฐ”์— ๋Œ€ํ•ด ๋ณต์Šตํ•œ๋‹ค.
2.1. ๊ต์œก๋ชฉํ‘œ
์ด ์žฅ์˜ ๊ต์œก๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๊ต์œก๋ชฉํ‘œ
์ž๋ฐ”์˜ ํŠน์„ฑ ์ดํ•ด์™€ ๋ณต์Šต
2.2. ์ž๋ฐ”์˜ ์—ญ์‚ฌ
์ž๋ฐ” ์—ญ์‚ฌ
1991๋…„: Sun Microsystems ์‚ฌ์˜ James Gosling๊ณผPatrick
Naughton์ด ๊ฐœ๋ฐœํ•œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ช…: Green
์›๋ž˜๋Š” ์ง€๋Šฅํ˜• TV์™€ ๊ฐ™์€ ๊ฐ€์ •์šฉ ๊ฐ€์ „ ์ œํ’ˆ์— ์‚ฌ์šฉ๋  ์–ธ์–ด๋กœ
๊ฐœ๋ฐœ๋จ
๊ฐ ์ œ์กฐ์—…์ฒด๋Š” ๋‹ค๋ฅธ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ์ปดํ“จํ„ฐ
๊ตฌ์กฐ์— ๋…๋ฆฝ์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค๊ณ„ ๋ชฉํ‘œ์˜€๋‹ค.
๊ธฐ๊ณ„์–ด์™€ ๋…๋ฆฝ์ ์ธ ์ค‘๊ฐ„
์ค‘๊ฐ„ ์ฝ”๋“œ
์ฝ”๋“œ(intermediate code)๋ฅผ ์ƒ์„ฑํ•˜๋Š”
์ด๋™ ๊ฐ€๋Šฅ ์–ธ์–ด ๊ฐœ๋ฐœ (write-once run anywhere)
C++ ๊ธฐ๋ฐ˜: ๊ฐ์ฒด์ง€ํ–ฅ
๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด
์–ธ์–ด
์—…๊ณ„ ๋ฐ˜์‘: ๋ƒ‰๋Œ€
1991๋…„ Sun ์‚ฌ์˜ James Gosling๊ณผ Patrick Naughton์€ ์ผ€์ด๋ธ” TV ์Šค์œ„์น˜ ๋ฐ•์Šค์™€ ๊ฐ™์€ ๊ฐ€
์ „์ œํ’ˆ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค. ๊ฐ€์ „์ œํ’ˆ์˜ ๊ฐ ์ œ์กฐ
์—…์ฒด๋Š” ๋‹ค๋ฅธ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์‹์„ฑ(portability)์ด ์ด๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค
๊ณ„ ๋ชฉํ‘œ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ๊ธฐ๊ณ„์— ์˜์กด์ ์ธ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด
pf3
pf4
pf5
pf8

Partial preview of the text

Download Java Overview and Object-Oriented Programming and more Lecture notes Algorithms and Programming in PDF only on Docsity!

์ž๋ฐ”์˜ ํŠน์„ฑ ์ดํ•ด์™€ ๋ณต์Šต

1991 ๋…„ : Sun Microsystems ์‚ฌ์˜ James Gosling ๊ณผ Patrick Naughton ์ด ๊ฐœ๋ฐœํ•œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ช… : Green ์›๋ž˜๋Š” ์ง€๋Šฅํ˜• TV ์™€ ๊ฐ™์€ ๊ฐ€์ •์šฉ ๊ฐ€์ „ ์ œํ’ˆ์— ์‚ฌ์šฉ๋  ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋จ ๊ฐ ์ œ์กฐ์—…์ฒด๋Š” ๋‹ค๋ฅธ CPU ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ์— ๋…๋ฆฝ์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค๊ณ„ ๋ชฉํ‘œ์˜€๋‹ค. ๊ธฐ๊ณ„์–ด์™€ ๋…๋ฆฝ์ ์ธ ์ค‘๊ฐ„์ค‘๊ฐ„ ์ฝ”๋“œ์ฝ”๋“œ (intermediate code) ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ด๋™ ๊ฐ€๋Šฅ ์–ธ์–ด ๊ฐœ๋ฐœ (write-once run anywhere) C++ ๊ธฐ๋ฐ˜ : ๊ฐ์ฒด์ง€ํ–ฅ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์–ธ์–ด ์—…๊ณ„ ๋ฐ˜์‘ : ๋ƒ‰๋Œ€

1991 ๋…„ Sun ์‚ฌ์˜ James Gosling๊ณผ Patrick Naughton์€ ์ผ€์ด๋ธ” TV ์Šค์œ„์น˜ ๋ฐ•์Šค์™€ ๊ฐ™์€ ๊ฐ€ ์ „์ œํ’ˆ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค. ๊ฐ€์ „์ œํ’ˆ์˜ ๊ฐ ์ œ์กฐ ์—…์ฒด๋Š” ๋‹ค๋ฅธ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์‹์„ฑ(portability)์ด ์ด๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค ๊ณ„ ๋ชฉํ‘œ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ๊ธฐ๊ณ„์— ์˜์กด์ ์ธ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด

์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ ๊ธฐ๊ณ„์™€ ๋…๋ฆฝ์ ์ธ ์ค‘๊ฐ„์ฝ”๋“œ(intermediate code)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ ํƒํ•˜์˜€๋‹ค. ์ด ์ค‘๊ฐ„์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ(bytecode)๋ผ ํ•˜๋ฉฐ, ์ด ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ๊ธฐ๊ณ„(virtual machine)๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ(interpreter) ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. Sun ์‚ฌ๋Š” UNIX ๊ธฐ๋ฐ˜ ์›Œํฌ์Šคํ…Œ์ด์…˜์ด ์ฃผ๋ ฅ ์ œํ’ˆ์ด๋ฏ€๋กœ ์ด๋“ค์€ C++ ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ํƒ„์ƒ๋œ ์–ธ ์–ด๊ฐ€ ์ž๋ฐ”์ด์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ํฐ ๋ฐ˜์‘์„ ์–ป์ง€ ๋ชปํ•˜์˜€๋‹ค.

WWW ์˜ ๊ธ‰์„ฑ์žฅ Gosling ๋“ฑ์€ ์ด ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ 1995 ๋…„๋„์— HotJava ๋ผ๊ณ  ํ•˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ฐœ๋ฐœํ•จ ์ด ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ์กด ๋ธŒ๋ผ์šฐ์ €์™€ ๋‹ฌ๋ฆฌ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฟ์• ํ”Œ๋ฆฟ (applet) ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ์›น์—์„œ ๋‹ค์šด๋ฐ›์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ ์•ˆ์ „์„ฑ๊ณผ ์ด์‹์„ฑ์ด ์ค‘์š”ํ•œ ์ด์Šˆ ํ˜„์žฌ๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ์—์„œ๋„ ์ง€์› 1996 ๋…„ : Sun Microsystems ์‚ฌ๋Š” ์ž๋ฐ”์˜ ์ฒซ ๋ฒ„์ „ ์ถœ์‹œ ์‹ค์ œ ์‘์šฉ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ์—๋Š” ๊ธฐ๋Šฅ์ด ๋ฏธํก 1998 ๋…„ : Java 2 ์ถœ์‹œ ํ˜„์žฌ๋Š” J2SE(Core/Desktop), J2EE(Enterprise), J2ME(Mobile) ์„ธ ์ข…๋ฅ˜์˜ ๋ฒ„์ „์„ ์ œ๊ณต

์ž๋ฐ”๊ฐ€ ๊ฐœ๋ฐœ๋œ ์‹œ๊ธฐ๋Š” ์šฐ์—ฐํžˆ ์ธํ„ฐ๋„ท ํŠนํžˆ ์›”๋“œ์™€์ด๋“œ์›น(WWW, World Wide Web)์ด ํญ๋ฐœ ์ ์œผ๋กœ ๊ธ‰์„ฑ์žฅํ•œ ์‹œ๊ธฐ์™€ ์ผ์น˜ํ•˜์˜€๋‹ค. Gosling์€ ์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ์ž๋ฐ” ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ ๋‹น ์‹œ๊นŒ์ง€๋Š” ์ƒ์ƒ์„ ํ•˜์ง€ ๋ชปํ•˜์˜€๋˜ ์ƒˆ๋กœ์šด ๊ฐœ๋…์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ์ด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฟ(applet)์ด๋ผ๊ณ  ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์›น์—์„œ ๋‹ค์šด๋ฐ›์•„ ์›น ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์‹ค ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด ๊ฐœ๋…์ด ํฐ ํ˜ธ์‘์„ ์–ป์—ˆ์œผ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ ์ž๋ฐ” ์–ธ์–ด๋„ ์ „์„ธ๊ณ„์ ์ธ ๊ด€์‹ฌ์„ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค. ์ดํ›„ Sun์‚ฌ๋Š” 1996 ๋…„์— ์ž๋ฐ”์˜ ์ฒซ ๋ฒ„์ „์„ ๊ณต์‹œ์ ์œผ๋กœ ์ถœ์‹œํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ฒซ ๋ฒ„์ „์€ ๋†’์€ ์ˆ˜์ค€์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ์—๋Š” ๋งค์šฐ ๋ถ€์กฑํ•˜์˜€๋‹ค. 1998๋…„ Java 2๊ฐ€ ์ถœ ์‹œ๋˜๋ฉด์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์–ด๊นจ๋ฅผ ๋‚˜๋ž€ํžˆ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทผ์— ์–ด๋А ์ •๋„ ํ˜„์‹คํ™”๋˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ์ฐฝ๊ธฐ์—๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ Visual ์–ธ์–ด๋“ค์ด ์ œ๊ณต ํ•˜๋Š” ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๊ฐ™์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์—†์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์˜ ๋‹จ์ˆœ ๋ฒ„์ „์œผ๋กœ ์ƒ ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋ฆ„๋งŒ ์œ ์‚ฌํ•  ๋ฟ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์ž๋ฐ”๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Š” Netscape ์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋ฉฐ, ์ž๋ฐ”์™€ ์œ ์‚ฌํ•œ ๋ฌธ๋ฒ•์  ๊ตฌ์กฐ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ์–ด ๊ทธ๋“ค์ด ์ด๋ฆ„์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ช…๋ช…ํ•œ ๊ฒƒ์ผ ๋ฟ ์ž๋ฐ”์™€๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค.

OOP์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ์ฒด๊ฐ์ฒด (object) ๋กœ ๊ตฌ์„ฑ๋จ ๊ฐ์ฒด๋Š” ํ–‰์œ„ (behavior), ์ƒํƒœ (state), ์‹๋ณ„์ž (identity) ๋ฅผ ๊ฐ€์ง ์บก์Аํ™” (encapsulation): ๋ฐ์ดํ„ฐ์™€ ํ–‰์œ„๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. ๋‚ด๋ถ€ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” donโ€™t care ํ•œ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ˆ๋Œ€ ์ง์ ‘ ์กฐ์ž‘ํ•˜์ง€ ์•Š์Œ ํด๋ž˜์Šคํด๋ž˜์Šค (class) ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„ ํด๋ž˜์Šค๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ , ๋ฉค๋ฒ„๋ณ€์ˆ˜ (member/instance variable, field, attribute) ์™€ ๋ฉ”์†Œ๋“œ (method, member function) ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํด๋ž˜์Šค ๊ฐ„์— ๊ด€๊ณ„ : use, has-a(aggregation), is-a(generalization) ์ธ์Šคํ„ด์Šค์ธ์Šคํ„ด์Šค (instance): ํด๋ž˜์Šค์˜ ํ•œ ๊ฐ์ฒด

๋Š” ํฌ๊ฒŒ ์‚ฌ์šฉ(use), ํฌํ•จ(has-a), ์ƒ์†(is-a) ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ ๊ด€๊ณ„๋Š” ํ•œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๊ทธ์—๊ฒŒ ์ฃผ์–ด์ง„ ์ผ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ํฌํ•จ ๊ด€๊ณ„๋Š” ํ•œ ๊ฐ์ฒด๊ฐ€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์ƒ์† ๊ด€๊ณ„๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ์—์„œ ๋ณด๋‹ค ์ž์„ธํžˆ ์„ค๋ช…ํ•œ๋‹ค. ํด๋ž˜์Šค์˜ ํ•œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค(instance)๋ผ ํ•œ๋‹ค.

OOP์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

์ƒ์†์ƒ์† (inheritance): is-a ๊ด€๊ณ„ super/sub, base/derived, parent/child ์„ธ๋ถ„ํ™” (specialization), ์ผ๋ฐ˜ํ™” (generalization) ์žฌ์‚ฌ์šฉ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๊ด€๋ จ ํ‚ค์›Œ๋“œ : extends, super ์ž๋ฐ”๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ƒ์† ๊ณ„์ธต๊ตฌ์กฐ , ์ƒ์† ์ฒด์ธ ๋‹คํ˜•์„ฑ (polymorphism) ์—ฐ์‚ฐ์€ ๊ฐ์ฒด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ–‰์œ„๋ฅผ ํ•œ๋‹ค. (late binding) overloading cf. overriding

๋‹คํ˜•์„ฑ(polymorphism)์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋˜ ๋‹ค๋ฅธ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” โ€œ๋ฌธ์„ ์—ด ๋‹คโ€, โ€œ์ฐฝ๋ฌธ์„ ์—ด๋‹คโ€์ฒ˜๋Ÿผ ๊ฐ™์€ โ€œ์—ด๋‹คโ€๋ผ๋Š” ํ‘œํ˜„์„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์‚ฌ๋ฌผ์— ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ โ€œ์—ด๋‹คโ€ ์˜ ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๊ทธ๊ฒƒ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฌธ, ์ฐฝ๋ฌธ, ์„œ๋ž์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜ ๋ฐ์—์„œ๋„ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, ๋‹คํ˜•์„ฑ์€ ์ƒ์†๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ ๋”์šฑ ๊ทธ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋˜ ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ์šฉ์–ด๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ(overloading)์ด๋‹ค. ์ด๊ฒƒ์€ ํ•œ ํด๋ž˜ ์Šค ๋‚ด์— ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ด ๋•Œ ์ œํ•œ์€ ๋ฉ”์†Œ๋“œ์˜ ์„œ๋ช… ์ด ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ชฉ๋ก์ด ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ํ˜ผ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ ์–ด๋กœ โ€œoverridingโ€์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ๋‹ค. ์ด ์šฉ์–ด๋Š” ์ƒ์†๊ณผ ๊ด€๋ จ๋œ ์šฉ์–ด๋กœ์„œ ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

&&, || ์—ฐ์‚ฐ์ž์™€ &, | ์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด์ ์€? short-circuit evaluation ์ด๋ž€? dangling-else ๋ฌธ์ œ๋ž€? switch ๋ฌธ์—์„œ โ€œfall throughโ€ ํ–‰์œ„๋ž€? new ์—ฐ์‚ฐ์ž์˜ ์šฉ๋„? ๋ฌธ์ž์—ด ์ƒ์„ฑ์˜ ํŠน์ดํ•œ ์ ์€? int[ ] nlist = new int[10]; int[ ] alist = nlist; alist[3]=2; ๊ทธ๋Ÿฌ๋ฉด nlist[3]? call-by-value ์™€ call-by-reference ์˜ ์ฐจ์ด์ ? garbage ๋ž€ , garbage collection ์ด๋ž€?

]

๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” ๋ช…๋ฐฑํ•˜๊ฒŒ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ( ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“ ) ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ข…๋ฅ˜? ๊ฐ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ์ดˆ๊ธฐ๊ฐ’์€? public, private, protected, default access specifier ๋ž€? ์ƒ์„ฑ์ž ( constructor ) ๋ฉ”์†Œ๋“œ๋ž€? ์ƒ์„ฑ์ž์˜ ์ข…๋ฅ˜๋Š”? ๋ฉ”์†Œ๋“œ ์„œ๋ช… ( method signature ) ์ด๋ž€? ์ˆจ๊ฒจ์ง„ ์ธ์ˆ˜ ( implicit argument ) ๋ž€? ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” ์ˆจ๊ฒจ์ง„ ์ธ์ˆ˜๋ฅผ ๊ฐ€์ง„๋‹ค. ( ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“ ) ์ˆ˜์ •์ž ( mutator ) ๋ฉ”์†Œ๋“œ์™€ ์—ด๋žŒ์ž ( accessor ) ๋ฉ”์†Œ๋“œ๋ž€? ๋‹ค๋ฅธ ๋ง๋กœ transformer, observer ๋ฉ”์†Œ๋“œ

public ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” ์—ด๋žŒ์ž , ์ˆ˜์ •์ž ๋ฉ”์†Œ๋“œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ public ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š”? super ํ‚ค์›Œ๋“œ? super ๋‚˜ this ๋ฅผ ์ด์šฉํ•œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์˜ ์ œํ•œ์€? static ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์˜ ์˜๋ฏธ? cf. ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•œ๋‹ค. public static final int MAX = 100; ์—ฌ๊ธฐ์„œ public, static, final ์„ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š”? ํด๋ž˜์Šค B ๊ฐ€ ํด๋ž˜์Šค A ๋ฅผ ์ƒ์†ํ•˜์˜€๋‹ค. a ๋Š” A ์˜ ์ธ์Šคํ„ด์Šค์ด๊ณ  , b ๋Š” B ์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค. a=b ์™€ b=a ์ค‘ ์–ด๋А ๊ฒƒ์ด ์œ ํšจํ•œ ๋ฌธ์žฅ์ธ๊ฐ€?

package ๋ž€? ์–ด๋–ค ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•? ์ž๋ฐ” ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ import ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€๋Š”? import java.awt.;* ์„ ์‚ฌ์šฉํ•˜๋ฉด java.awt ํŒจํ‚ค์ง€์— ์žˆ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ํฌํ•จ๋œ๋‹ค. ( ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“ )? instanceof ์—ฐ์‚ฐ์ž์˜ ๊ธฐ๋Šฅ์€? cf. getClass() ๋ฉ”์†Œ๋“œ abstract ๋ฉ”์†Œ๋“œ๋ž€ , abstract ํด๋ž˜์Šค๋ž€? ๋ถˆ๋ณ€ ๊ฐ์ฒด (immutable object) ๋ž€? Object ํด๋ž˜์Šค๋ž€? Wrapper ํด๋ž˜์Šค๋ž€? ์ž๋ฐ”๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ์ œ๊ณตํ•˜๋‚˜? interface ๋ž€ ?, ๊ทธ๊ฒƒ์˜ ์šฉ๋„๋Š”? ๋‚ด๋ถ€ (inner) ํด๋ž˜์Šค๋ž€?