๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

7์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 10. 17.

 

 


 

์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์˜๋ฏธ๋ฅผ ์ดˆ๋ณด์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋“ฏ์ด ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ค˜.

 

 

๐Ÿงฑ 1. ๊ฐ์ฒด(Object)๋ž€?

์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋Š” “ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์ด๋‚˜ ๊ฐœ๋…์„ ํ”„๋กœ๊ทธ๋žจ ์†์—์„œ ํ‘œํ˜„ํ•œ ๊ฒƒ”์ด์—์š”.

 

๐Ÿš— 2. ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ (new ํ‚ค์›Œ๋“œ)

์„ค๊ณ„๋„(Car)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ง„์งœ ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ๋ฐ”๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์ด์—์š”.
์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ new ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.

 
Car myCar = new Car();
 

3. ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ž€?

“์ดˆ๊ธฐํ™””๋Š” ๋งŒ๋“  ๊ฐ์ฒด์— ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ด์—์š”.
์ฆ‰, ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒ‰๊น”·์†๋„ ๊ฐ™์€ ๊ธฐ๋ณธ ์ƒํƒœ๋ฅผ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด์ฃ .

 


์ž๋ฐ”์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜(“์–ด๋””์— ์žˆ๋А๋ƒ”)์— ๋”ฐ๋ผ ์„ฑ๊ฒฉ์ด ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๋œป์ด์—์š”.
์ด๊ฑธ ์ดํ•ดํ•˜๋ฉด “ํ•„๋“œ”, “์ง€์—ญ ๋ณ€์ˆ˜(์—์–ด๋ฆฌ์–ด)” ๊ฐœ๋…์ด ํ•œ ๋ฒˆ์— ์ •๋ฆฌ๋ผ์š”.

์ดˆ๋ณด์ž ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ• ๊ฒŒ์š” ๐ŸŒฑ


๐Ÿงฉ 1. ๋ณ€์ˆ˜๋Š” “์–ด๋””์—์„œ ์„ ์–ธํ•˜๋А๋ƒ”์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค

์ž๋ฐ”์—์„œ ๋ณ€์ˆ˜๋Š” ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆ ์š” ๐Ÿ‘‡

 

๊ตฌ๋ถ„ ์„ ์–ธ ์œ„์น˜์˜ˆ์‹œ ํŠน์ง•
ํ•„๋“œ(Field) ํด๋ž˜์Šค ์•ˆ, ๋ฉ”์„œ๋“œ ๋ฐ– class Student { int age; } ๊ฐ์ฒด์˜ ์†์„ฑ(์ •๋ณด) ์„ ์ €์žฅ
์ง€์—ญ ๋ณ€์ˆ˜(Local Variable) ๋ฉ”์„œ๋“œ ์•ˆ (๋˜๋Š” ๋ธ”๋ก ์•ˆ) void study() { int hour = 3; } ์ผ์‹œ์ ์œผ๋กœ๋งŒ ์“ฐ์ž„

 

2. ํ•„๋“œ(Field) — ํด๋ž˜์Šค์˜ “์†์„ฑ”

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ํด๋ž˜์Šค๊ฐ€ ์žˆ์„ ๋•Œ:

 
public class Student { String name; // ํ•„๋“œ int age; // ํ•„๋“œ }

์—ฌ๊ธฐ์„œ name๊ณผ age๋Š” ํ•„๋“œ(field) ์—์š”.

  • ํด๋ž˜์Šค ์•ˆ์— ์žˆ์ง€๋งŒ ๋ฉ”์„œ๋“œ ๋ฐ–์— ์žˆ์Œ
  • ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ(new Student()) ํ•จ๊ป˜ ์ƒ์„ฑ๋จ
  • ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š” ๋™์•ˆ ๊ณ„์† ์œ ์ง€๋จ

๐Ÿง  ์ฆ‰, ํ•„๋“œ๋Š” “๊ฐ์ฒด๊ฐ€ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์ •๋ณด” ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”.


๐Ÿงญ 3. ์ง€์—ญ ๋ณ€์ˆ˜(Local Variable) — “์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ”

์ด์ œ ๋ฉ”์„œ๋“œ ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š” ๐Ÿ‘‡

 
public void study() { int hour = 3; // ์ง€์—ญ ๋ณ€์ˆ˜ System.out.println(hour + "์‹œ๊ฐ„ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค."); }

์—ฌ๊ธฐ์„œ hour๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์˜ˆ์š”.

  • ๋ฉ”์„œ๋“œ ์•ˆ(๋ธ”๋ก ์•ˆ) ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์‚ฌ๋ผ์ง
  • ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด(๊ฐ’์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด) ์‚ฌ์šฉ ๋ถˆ๊ฐ€

๐Ÿง  ์ฆ‰, ์ง€์—ญ ๋ณ€์ˆ˜๋Š” “์ž ๊น ํ•„์š”ํ•œ ์ •๋ณด” ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์“ฐ์—ฌ์š”.

 

 


๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์ด๋ž€?

ํ”„๋กœ๊ทธ๋žจ์„ ‘๊ฐ์ฒด’(object) ๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ๋ณด๊ณ ,
๊ฐ๊ฐ์˜ ๊ฐ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ(์†์„ฑ) ์™€ ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ) ์„ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ 
์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด์—์š”.


๐Ÿ’ป ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด 10๊ฐ€์ง€

๋ฒˆํ˜ธ์–ธ์–ดํŠน์ง• ์š”์•ฝ
1 Java (์ž๋ฐ”) ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ OOP ์–ธ์–ด. “๋ชจ๋“  ๊ฒƒ์€ ๊ฐ์ฒด๋‹ค.” JVM ์œ„์—์„œ ์‹คํ–‰๋จ.
2 C++ C ์–ธ์–ด์— ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…(ํด๋ž˜์Šค, ์ƒ์† ๋“ฑ)์„ ์ถ”๊ฐ€ํ•œ ์–ธ์–ด. ์†๋„๊ฐ€ ๋น ๋ฆ„.
3 Python (ํŒŒ์ด์ฌ) ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ• + ๊ฐ์ฒด์ง€ํ–ฅ ์™„์ „ ์ง€์›. ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ.
4 C# (์”จ์ƒต) ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด. Java์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง.
5 Ruby (๋ฃจ๋น„) “๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด๋‹ค”๋ฅผ ์ฒ ์ €ํžˆ ๊ตฌํ˜„ํ•œ ์ˆœ์ˆ˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด.
6 Swift (์Šค์œ„ํ”„ํŠธ) iOS ๊ฐœ๋ฐœ์šฉ ์–ธ์–ด. ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ๊ตฌ์กฐ๋ฅผ ์ง€์›.
7 Kotlin (์ฝ”ํ‹€๋ฆฐ) ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์ตœ์‹  ์–ธ์–ด. ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ๋„ ์™„์ „ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ + ํ•จ์ˆ˜ํ˜• ์ง€์›.
8 Objective-C (์˜ต์ ํ‹ฐ๋ธŒC) C์— ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์„ ์ถ”๊ฐ€ํ•œ ์–ธ์–ด. ์˜ˆ์ „ iOS ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ.
9 Scala (์Šค์นผ๋ผ) ์ž๋ฐ” ๊ธฐ๋ฐ˜, ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•จ๊ป˜ ์ง€์›.
10 Smalltalk (์Šค๋ชฐํ† ํฌ) ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์˜ “์›์กฐ”. ์ž๋ฐ”, ๋ฃจ๋น„, ํŒŒ์ด์ฌ ๋“ฑ์— ํฐ ์˜ํ–ฅ์„ ์คŒ.

๐ŸŒŸ ์ฐธ๊ณ ๋กœ

์š”์ฆ˜์€ “๊ฐ์ฒด์ง€ํ–ฅ + ํ•จ์ˆ˜ํ˜•” ์„ ๊ฐ™์ด ์ง€์›ํ•˜๋Š” ํ˜ผํ•ฉํ˜• ์–ธ์–ด๋„ ๋งŽ์•„์š”.
์˜ˆ๋ฅผ ๋“ค์–ด Kotlin, Scala, Swift ๊ฐ™์€ ์–ธ์–ด๋“ค์ด์ฃ .


๐ŸŽฏ ์ •๋ฆฌ ํ•œ ์ค„

๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋Š” “ํ˜„์‹ค์˜ ์‚ฌ๋ฌผ(๊ฐ์ฒด) ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์†์œผ๋กœ ์˜ฎ๊ฒจ์™€
๊ทธ๋“ค์˜ ๊ด€๊ณ„์™€ ํ–‰๋™์„ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์–ธ์–ด”์˜ˆ์š”.

 


์„ ์–ธ์ด๋ž€ ?

1๏ธโƒฃ ์„ ์–ธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

์„ ์–ธ์ด๋ž€ ์ปดํ“จํ„ฐ์—๊ฒŒ “๋‚˜๋Š” ์ด๋Ÿฐ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๊ฑฐ์•ผ”๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด์—์š”.
์ฆ‰, ๋ฌด์—‡์ด ์žˆ๊ณ  ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ:
 
int age; // 'age'๋ผ๋Š” ์ด๋ฆ„์˜ ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
  • ์—ฌ๊ธฐ์„œ int → ๋ณ€์ˆ˜์˜ ํƒ€์ž…
  • age → ๋ณ€์ˆ˜์˜ ์ด๋ฆ„
  • ์ด ์ค„๋งŒ ์žˆ์œผ๋ฉด ๊ฐ’์€ ์•„์ง ์•ˆ ๋„ฃ์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

2๏ธโƒฃ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”

์„ ์–ธ ํ›„ ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ์„ **์ดˆ๊ธฐํ™”(initialization)**๋ผ๊ณ  ํ•ด์š”.

 
int age; // ์„ ์–ธ age = 25; // ์ดˆ๊ธฐํ™” // ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋™์‹œ์— ํ•  ์ˆ˜๋„ ์žˆ์Œ int height = 170;

3๏ธโƒฃ ์„ ์–ธ์ด ๊ผญ ํ•„์š”ํ•œ ์ด์œ 

  • ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ “์ด ์ด๋ฆ„์€ ์•ž์œผ๋กœ ์ด๋ ‡๊ฒŒ ์“ธ ๊ฑฐ์•ผ”๋ผ๊ณ  ์•Œ๋ ค์•ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ํƒ€์ž…์„ ์•Œ๋ ค์ฃผ๋ฉด, ์ž๋ฐ”๊ฐ€ ํƒ€์ž… ์•ˆ์ „์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž๋ฅผ ๋„ฃ์„ ๋ณ€์ˆ˜์—๋Š” ๋ฌธ์ž ๋„ฃ๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.

4๏ธโƒฃ ์„ ์–ธ์˜ ์ข…๋ฅ˜

  1. ๋ณ€์ˆ˜ ์„ ์–ธ
 
double weight; String name;
  1. ๋ฉ”์„œ๋“œ ์„ ์–ธ
 
void sayHello() { System.out.println("Hello!"); }
  1. ํด๋ž˜์Šค ์„ ์–ธ
 
class Person { String name; int age; }

์ •๋ฆฌํ•˜๋ฉด, **์„ ์–ธ = “์ด๋ฆ„๊ณผ ํƒ€์ž…์„ ์ปดํ“จํ„ฐ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ”**์ด์—์š”.
์ดˆ๊ธฐํ™”๋Š” ์„ ํƒ์ด์ง€๋งŒ, ๋‚˜์ค‘์— ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋Œ€๋ถ€๋ถ„ ์ดˆ๊ธฐํ™”๋ฅผ ๊ฐ™์ด ํ•ด์ฃผ์ฃ .

 


 

1๏ธโƒฃ ๋นŒ๋“œ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

๋นŒ๋“œ = ์šฐ๋ฆฌ๊ฐ€ ์“ด ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด์—์š”.

  • ์ž๋ฐ”์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ .java ํŒŒ์ผ(์†Œ์Šค์ฝ”๋“œ)์„ .class ํŒŒ์ผ(๋ฐ”์ดํŠธ์ฝ”๋“œ)๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •
  • ์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” **JVM(Java Virtual Machine)**์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด์š”.

์ฆ‰:

 
์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ(.java) → ์ปดํ“จํ„ฐ๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ(.class)

 


์ž๋ฐ”์—์„œ **ํŒŒ๋ผ๋ฏธํ„ฐ(parameter)**๊ฐ€ ๋ญ”์ง€ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ค„๊ฒŒ์š”.


1๏ธโƒฃ ๊ธฐ๋ณธ ๊ฐœ๋…

ํŒŒ๋ผ๋ฏธํ„ฐ = ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜๋Š” ์ž…๋ ฅ๊ฐ’

  • ๋ฉ”์„œ๋“œ๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๋Š” ๋ณ€์ˆ˜
  • ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

2๏ธโƒฃ ์˜ˆ์‹œ

 
void greet(String name) { System.out.println("์•ˆ๋…•ํ•˜์„ธ์š”, " + name + "๋‹˜!"); }
  • ์—ฌ๊ธฐ์„œ name์ด ํŒŒ๋ผ๋ฏธํ„ฐ
  • ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๊ฐ’์„ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Œ

 

3๏ธโƒฃ ํŒŒ๋ผ๋ฏธํ„ฐ vs ์ธ์ˆ˜

  • ํŒŒ๋ผ๋ฏธํ„ฐ(parameter): ๋ฉ”์„œ๋“œ ์ •์˜ ์‹œ ๋ณ€์ˆ˜ ์ด๋ฆ„
  • ์ธ์ˆ˜(argument): ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์‹ค์ œ ๊ฐ’
 
void add(int a, int b) { // a, b = ํŒŒ๋ผ๋ฏธํ„ฐ System.out.println(a + b); } add(3, 5); // 3, 5 = ์ธ์ˆ˜

4๏ธโƒฃ ์ •๋ฆฌ

  • ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•  ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜
  • ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ค‘์š”ํ•œ ์š”์†Œ
  • ์—ฌ๋Ÿฌ ๊ฐœ๋„ ๊ฐ€๋Šฅ:
 
void introduce(String name, int age) { System.out.println(name + "์€ " + age + "์‚ด์ž…๋‹ˆ๋‹ค."); }