java 7

[Java 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] μ ‘κ·Ό μ œν•œμž (μ ‘κ·Ό μ œμ–΄μž)

μ ‘κ·Ό μ œν•œμž ( Access Modifier ) μ œν•œμž(modifier)λž€ ν΄λž˜μŠ€μ™€ 클래슀 λ©€λ²„μ˜ μ„ μ–Έ μ‹œ μ‚¬μš©ν•˜μ—¬ 뢀가적인 의미λ₯Ό λΆ€μ—¬ν•œλ‹€. μžλ°”μ—μ„œλŠ” 정보 은닉을 μœ„ν•΄ μ ‘κ·Ό μ œμ–΄μž(access modifier)λΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆλŠ”λ°, μ ‘κ·Ό μ œν•œμžλ₯Ό μ‚¬μš©ν•˜λ©΄ 클래슀 μ™ΈλΆ€μ—μ„œμ˜ 직접적인 접근을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” 멀버λ₯Ό μ„€μ •ν•˜μ—¬ 정보 은닉을 ꡬ체화할 수 μžˆλ‹€. (* 정보 은닉 = data hiding : μ‚¬μš©μžκ°€ ꡳ이 μ•Œ ν•„μš”κ°€ μ—†λŠ” 정보λ₯Ό μ‚¬μš©μžλ‘œλΆ€ν„° μˆ¨κΈ°λŠ” 것) μ ‘κ·Ό μ œν•œμžλŠ” μ™œ μ€‘μš”ν•œκ°€ ? 규λͺ¨ μžˆλŠ” ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€κ³  κ°€μ •ν•΄ 보자. 규λͺ¨κ°€ μ»€μ§€λŠ” 만큼 λ³΅μž‘μ„±μ΄ μ¦κ°€ν•œλ‹€. 그런데 객체λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžκ°€ 객체 λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œμ— μ ‘κ·Όν•¨μœΌλ‘œμ„œ κ°œλ°œμžκ°€ μ˜λ„ν•˜μ§€ μ•Šμ€ μ˜€μž‘λ™μ„ μΌμœΌν‚¨λ‹€..

Programming/Java 2021.03.01

[Java 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] λ©”λͺ¨λ¦¬ λͺ¨λΈ - JVM

μžλ°” 가상 λ¨Έμ‹  Java Virtual Machine 일반 ν”„λ‘œκ·Έλž¨μ€ '운영체제'κ°€ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚¨λ‹€. 반면, JVM은 μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 할당받은 λ©”λͺ¨λ¦¬ 곡간을 기반으둜 μžλ°” ν”„λ‘œκ·Έλž¨(=클래슀 파일)을 μ‹€ν–‰ν•œλ‹€. 즉, μžλ°” ν”„λ‘œκ·Έλž¨μ˜ 클래슀 νŒŒμΌμ€ μš΄μ˜μ²΄μ œμ—μ„œ 직접 λ™μž‘ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μžλ°” 가상머신(JVM) μœ„μ—μ„œ λ™μž‘ν•œλ‹€. μž₯점 단점 Java ν”„λ‘œκ·Έλž¨ JVM에 μ˜ν•΄μ„œ μ‹€ν–‰λ˜λŠ” κ°œλ…μ΄κΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œμ— 관계 없이 λ™μΌν•œ κ²°κ³Όλ₯Ό κ°–λŠ”λ‹€. = ν”Œλž«νΌ 독립성, 이식성이 λ†’λ‹€ μ‹€ν–‰ 속도가 느렀질 수 μžˆλ‹€. μ™œ JVM ꡬ쑰와 λ©”λͺ¨λ¦¬ κ°œλ…μ„ μ•Œμ•„μ•Ό ν• κΉŒ? λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•˜κ³  보닀 μ•ˆμ •μ μΈ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λ €λ©΄ λ©”λͺ¨λ¦¬ ꡬ쑰와 μž‘λ™ 원리λ₯Ό μ΄ν•΄ν•˜κ³  μ μ ˆν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. JVM의 λ©”λͺ¨λ¦¬ λͺ¨λΈ λ©”..

Programming/Java 2021.03.01

[Java 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] μƒμ„±μž (Constructor)

- μƒμ„±μž μƒμ„±μžλž€ 였브젝트 생성과 ν•¨κ»˜ μžλ™μ μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” νŠΉμˆ˜ν•œ λ©”μ†Œλ“œμ΄λ‹€. λ§Œμ•½ κ°œλ°œμžκ°€ μƒμ„±μžλ₯Ό κΈ°μˆ ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μΈμˆ˜κ°€ μ—†λŠ” μƒμ„±μžκ°€ μžλ™μœΌλ‘œ μƒμ„±λœλ‹€. (=λ””ν΄νŠΈ μƒμ„±μž) - λ””ν΄νŠΈ μƒμ„±μž λ©”μ†Œλ“œμ™€ 같은 λͺ¨μ–‘μ΄μ§€λ§Œ λ°˜ν™˜ν˜•μ΄ μ—†λ‹€. 클래슀 이름과 λ™μΌν•œ 이름을 κ°€μ§„λ‹€. class Product{ String name; // μƒν’ˆ 이름 int price; // μƒν’ˆ 가격 // λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” λ””ν΄νŠΈ μƒμ„±μž Product(){ name = "μΈν˜•"; price = 8000; } // λ§€κ°œλ³€μˆ˜κ°€ 두 개 ( String~ , int~) 인 μƒμ„±μž Product(String name, int price){ this.name=name; this.price=price; } } - 맀개 λ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μžλ₯Ό..

Programming/Java 2021.02.22

[Java 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] μ˜€λ²„λ‘œλ”©(Overloading)

- μ˜€λ²„λ‘œλ”©(Overloading)의 κ°œλ… 사전상 Overloading의 μ˜λ―ΈλŠ” '과적(過積)' 을 λœ»ν•œλ‹€. μžλ°”μ—μ„œμ˜ Overloading은 ν•œ 클래슀 μ•ˆμ—μ„œ λ™μΌν•œ μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것을 의미 ν•˜λŠ”λ°, ν•˜λ‚˜μ˜ 이름에 μ—¬λŸ¬ κΈ°λŠ₯이 κ°€λŠ₯ν•˜λ‹€κ³  이해해도 쒋을 것 κ°™λ‹€. ν•¨μˆ˜λͺ…이 κ³ μœ ν•΄μ•Όν•˜λŠ” C 언어와 달리 javaλŠ” λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ λ‹€λ₯΄λ©΄, λ™μΌν•œ 이름을 μ‚¬μš©ν•΄μ„œ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•  수 μžˆλ‹€. μš°λ¦¬κ°€ 많이 μ“°λŠ” println λ©”μ†Œλ“œκ°€ λŒ€ν‘œμ μΈ μ˜€λ²„λ‘œλ”©μ˜ 예라고 λ³Ό 수 μžˆλ‹€. '좜λ ₯' κΈ°λŠ₯을 κ°€μ§„ λ©”μ†Œλ“œλ“€μ„ printlnμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ μ •μ˜ν•  수 μžˆλ‹€. - μ˜€λ²„λ‘œλ”©(Overloading)의 쑰건 λ©”μ†Œλ“œ 이름이 동일해야 ν•œλ‹€. 맀개 λ³€μˆ˜μ˜ 개수 or νƒ€μž…μ΄ 달라야 ν•œλ‹€. 맀개 λ³€μˆ˜λŠ” ..

Programming/Java 2021.02.22

[JAVA 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] νŒ¨ν‚€μ§€μ˜ κ°œλ…

- νŒ¨ν‚€μ§€ 선언이 ν•„μš”ν•œ 상황 원(circle) κ°œλ°œμ„ ν•œλ‹€κ³  κ°€μ •ν•˜μž. λΉ λ₯Έ κ°œλ°œμ„ μœ„ν•΄ team1 κ³Ό team2λ₯Ό λ™μ‹œμ— νˆ¬μž…ν•˜μ—¬ team1μ—κ²ŒλŠ” μ›μ˜ 넓이λ₯Ό κ΅¬ν•˜κ²Œ ν–ˆκ³ , team 2μ—κ²ŒλŠ” μ›μ˜ λ‘˜λ ˆλ₯Ό κ΅¬ν•˜λ„λ‘ ν•˜μ˜€λ‹€. 그런데 개발된 결과물을 λ³΄λ‹ˆ λ¬Έμ œκ°€ λ°œμƒν•˜κ²Œ λœλ‹€. μ›μ˜ 넓이λ₯Ό ꡬ해야 ν•˜λŠ” team1은 Cricle μ΄λΌλŠ” 클래슀λͺ…μ˜ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆκ³ , μ›μ˜ λ‘˜λ ˆλ₯Ό ꡬ해야 ν•˜λŠ” team2 λ˜ν•œ Circleμ΄λΌλŠ” 클래슀λ₯Ό μž‘μ„±ν•œ 것이닀. 클래슀λͺ…은 νŒ¨ν‚€μ§€ λ‚΄λΆ€μ—μ„œ μ€‘λ³΅λ˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•˜λ―€λ‘œ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. ===> λ”°λΌμ„œ 곡간적, 접근적 좩돌 해결을 μœ„ν•œ νŒ¨ν‚€μ§€ μ„ μ–Έμ˜ ν•„μš” package teamproject; public class Circle{ // μ›μ˜ 넓이 κ΅¬ν•˜κΈ° } public class..

Programming/Java 2021.02.21

[Java 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°] 객체와 클래슀

μžλ°”λŠ” λŒ€ν‘œμ μΈ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어라고 ν•œλ‹€. 그런데 μ—¬κΈ°μ„œμ˜ κ°μ²΄λž€ λ¬΄μ—‡μΌκΉŒ? - '객체(Object)' 의 μ •μ˜ μžλ°”μ—μ„œμ˜ '객체' κ°œλ…μ„ μ΄ν•΄ν•˜κΈ°μ— μ•žμ„œ, μš°λ¦¬κ°€ μ‚¬λŠ” μ„Έμƒμ—μ„œμ˜ '객체'λŠ” μš°λ¦¬κ°€ ν‘œν˜„ν•  수 μžˆλŠ” μ‹€μ œ μ„Έκ³„μ˜ λͺ¨λ“  사물듀을 λœ»ν•œλ‹€. μ΄λŠ” λˆˆμ— 보이고 λ§Œμ Έμ§€λŠ” 와 보이지 μ•Šκ³  λ§Œμ Έμ§€μ§€ μ•ŠλŠ” κ°œλ…μœΌλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. κ°œλ…μ μΈ 객체 물리적인 객체 동물 고양이, 토끼, ν˜Έλž‘μ΄, μ‚¬μž... 필기ꡬ μ—°ν•„, 샀프, μ‚¬μΈνŽœ... μžλ™μ°¨ K5, SM5... - '클래슀(Class)' 의 μ •μ˜ ν΄λž˜μŠ€λž€ 객체와 κ΄€λ ¨λœ 데이터와 처리 λ™μž‘λ“€μ˜ λͺ¨μŒμ„ λœ»ν•œλ‹€. μ‰½κ²Œ 말해 객체에 λŒ€ν•œ '섀계도' 라고 λ³Ό 수 μžˆλ‹€. ν΄λž˜μŠ€κ°€ μ‹€μ²΄ν™”λœ 것이 객체(object)라고 ν•˜λ©°, 이λ₯Ό 싀체화 ν•˜λŠ” μž‘μ—…μ€ "였브젝트..

Programming/Java 2021.02.21

[java] scannerλ₯Ό ν†΅ν•œ 둜그인

아이디 himan, λΉ„λ°€λ²ˆν˜Έ 1234 일 λ•Œ μŠ€μΊλ„ˆλ₯Ό 톡해 둜그인 성곡, μ‹€νŒ¨λ₯Ό λ„μΆœν•˜λŠ” μ½”λ“œ ! λ―Έμ„Έν•œ μ°¨μ΄μ§€λ§Œ μ–΄λ–€ μ½”λ“œκ°€ 더 νš¨μœ¨μ μΈκ°€ κΆκΈˆν–ˆλ‹€. 1. 첫 μ‹œλ„ : String id; , String pass; 둜 import java.util.Scanner; public class Ex4 { public static void main(String[] args) { String id; String pass; Scanner scan = new Scanner(System.in); //2개의 String을 μž…λ ₯ λ°›κ² λ‹€λŠ” System.out.println("# idλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”"); String inputId = scan.next(); System.out.println("# passwordλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”..

728x90