Java programming

(22.10.12)Java: λ©”μ†Œλ“œ λ§Œλ“€κΈ° 및 객체지ν–₯ μ–Έμ–΄

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2022. 10. 12.

객체 지ν–₯ μ–Έμ–΄

객체지ν–₯ μ–Έμ–΄ 3λŒ€ νŠΉμ§• :  상속성, λ‹€ν˜•μ„±, 은닉성

상속성(Ingeritance)

λ‹€ν˜•μ„±(Polymorphism)

은닉성(Encapsulation) - μ ‘κ·Ό μ œν•œμž private 이용


**getMaxInt()λΌλŠ” μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•  λ•Œ,

0~20 μ‚¬μ΄μ˜ μž„μ˜μ˜ μ •μˆ˜λ₯Ό 5개 μΆ”μΆœν•˜μ—¬ 배열에 μ €μž₯ν•˜κ³  화면에 ν‘œμ‹œν•˜λ©° 그쀑 κ°€μž₯ 큰 수λ₯Ό λ¦¬ν„΄ν•˜λŠ” 클래슀 λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•˜κ³  ν˜ΈμΆœν•˜μ—¬ λ¦¬ν„΄λœ 값을 화면에 ν‘œμ‹œν•΄λ³΄μ„Έμš”.

λ°°μ—΄ μ΅œλŒ€κ°’ 뽑기 ( 랜덀 수둜 배열을 μ±„μ›Œμ„œ) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Arrays;
import java.util.Random;
 
public class MethodTest 
{
    public static void main(String[] args) 
    {
        System.out.println("λ¦¬ν„΄λœ μ΅œλŒ€ κ°’"+ getMaxInt());
    }
    public static int getMaxInt() {
        Random rd = new Random();
        int[] intarray = new int[5];
        for(int i=0 ; i<intarray.length ; i++){
            intarray[i] = rd.nextInt(21);
        }
        System.out.println(Arrays.toString(intarray));
        int max = -1;
        for(int i=0 ; i<intarray.length ; i++) {
            if(intarray[i]>max) {
                max = intarray[i];
            }
        }    
        return max ;
    }
}
cs

μ½˜μ†” κ°’ :

[1, 7, 13, 2, 19]
λ¦¬ν„΄λœ μ΅œλŒ€ κ°’19

 

return : λ‚˜μ˜¨ 00 값을 리턴해라

main λ©”μ†Œλ“œμ—μ„œ  " getMaxInt() " : getMaxInt() λ©”μ†Œλ“œμ—μ„œ λ¦¬ν„΄λœ κ°’ 호좜(λ°›κΈ°) -> 즉 max κ°’μ˜ ν‘œν˜„μ‹μ΄λ‹€.

getMaxInt() 의 () μ•ˆ λ‚΄μš©μ„ λ©”μ†Œλ“œ νŒŒλΌλ―Έν„° 리슀트 라고 ν•œλ‹€. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
public class MethodTest 
{
    public static void main(String[] args) 
    {
        int[] a = getMinMax(7,3);
        System.out.println(Arrays.toString(a));
    }
    public static int[] getMinMax(int a, int b)
    {                            // λ©”μ†Œλ“œ νŒŒλΌλ―Έν„° λ³€μˆ˜
        int max = a>b ? a : b;
        int min = a<b ? a : b;
        int[] result = new int[] {min,max};
        return result;
    }
}
cs

μ½˜μ†” κ°’: [3, 7]

 

getMinMax() λ©”μ†Œλ“œ μ•ˆμ— μžˆλŠ” int a, int bλ₯Ό λ©”μ†Œλ“œ νŒŒλΌλ―Έν„° λ³€μˆ˜λΌκ³  ν•œλ‹€.


λ°°μ—΄ μ˜€λ¦„μ°¨μˆœ μ •λ ¬

**0~20κΉŒμ§€ λ¬΄μž‘μœ„ μ •μˆ˜ 10개λ₯Ό μΆ”μΆœν•˜μ—¬ 배열에 μ €μž₯ν•œλ‹€. μƒμ„±λœ 배열을 λ©”μ†Œλ“œμ˜ νŒŒλΌλ―Έν„°μ— μ „λ‹¬ν•œλ‹€. 배열을 νŒŒλΌλ―Έν„°λ‘œ 받은 λ©”μ†Œλ“œλŠ” κ·Έ λ°°μ—΄μ˜ μ›μ†Œλ₯Ό 크기 순으둜 μ •λ ¬ν•˜μ—¬ λ‹€μ‹œ λ¦¬ν„΄ν•œλ‹€. μ™„μ„±λœ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ λ¦¬ν„΄λœ 배열을 ν‘œμ‹œν–ˆμ„ λ•Œ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ 데이터λ₯Ό ν™•μΈν•œλ‹€.

선택정렬(Selection sort)

μ›μ†Œ ν•˜λ‚˜μ”©μ„ μ •ν•˜μ—¬ μ˜†λ°°μ—΄ μ›μ†Œμ™€ λΉ„κ΅ν•˜μ—¬ 쑰건과 λ§žλ‹€λ©΄ λ§žλ°”κΎΌλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Arrays;
import java.util.Random;
 
public class MethodTest 
{
    public static void main(String[] args) 
    {
        Random rd = new Random();
        int[] a = new int[10];
        for(int i =0;i<a.length;i++) {
            a[i] = rd.nextInt(21);
        }
        int[] b = selectionsort(a);    
        System.out.println(Arrays.toString(b));
    }
    public static int[] selectionsort(int[] a)
    {                            
        int tmp = 0;
        for(int sel =0;sel<a.length-1;sel++) {
            for(int comp =sel+1;comp<a.length;comp++) {
                if(a[sel] > a[comp]) {
                    tmp = a[sel];
                    a[sel]=a[comp];
                    a[comp]= tmp;
                }
            }
        }
        return a;
    }
}
cs

μ½˜μ†” κ°’: [1, 2, 3, 6, 9, 10, 12, 17, 20, 20]

swap algorithm

λ¨Όμ € λΉ„μ–΄μžˆλŠ” 곡간 ν•˜λ‚˜λ₯Ό μ„ μ–Έν•΄μ£Όκ³  int tmp = 0;

여기에  값을 μ €μž₯ν•΄μ£Όκ³  λ‹€μŒ 값을 λΉ„μ–΄μžˆλŠ” 곳에 μ €μž₯ν•΄μ€„μˆ˜ μžˆλ‹€.

tmp = a[sel];
a=[sel]=a[comp];
a[comp]= tmp;

**10개 μ›μ†Œλ₯Ό κ°–λŠ”λ°°μ—΄μ„ 전달 λ°›μ•„μ„œ, 배열에 ν¬ν•¨λœ 1~20κΉŒμ§€ 랜덀 μ •μˆ˜λ₯Ό λͺ¨λ‘ ν•©ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•˜λŠ” λ©”μ†Œλ“œ μž‘μ„±ν•˜κ³  μž‘μ„±λœ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ κ·Έ 리턴값을 ν™•μΈν•œλ‹€.

배열을 μƒμ„±ν•˜λŠ” λ©”μ†Œλ“œμ™€  λ°°μ—΄μ˜ 합을 κ΅¬ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄μ„œ ν‘œν˜„

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Arrays;
import java.util.Random;
 
public class MethodTest 
{
    public static void main(String[] args) 
    {
        int[] a = createArray();
        int sum =getsumOfArray(createArray());
        System.out.println(Arrays.toString(a));
        System.out.println(sum);
    }
    static int[] createArray() {
        int[] arr = new int[10];
        Random rd = new Random();
        for(int i=0;i<arr.length;i++) {
            arr[i] = rd.nextInt(20)+1;
        }
        return arr;
    }
    static int getsumOfArray(int[] a) {
        int sum = 0;
        for(int i =0;i<a.length;i++) {
            sum += a[i];
        }
        return sum;    
    }
}
cs

μ½˜μ†” κ°’:

[16, 16, 1, 19, 4, 16, 3, 8, 20, 17]
132


두 μ •μˆ˜λ₯Ό λ°›μ•„μ„œ κ·Έ 결과값을 λ§μ…ˆμ‹ λ¬Έμžμ—΄λ‘œ λ¦¬ν„΄ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•˜μ—¬ 리턴 값을 ν‘œμ‹œν•˜μ‹œμ˜€

1
2
3
4
5
6
7
8
9
10
11
12
public class MethodTest 
{
    public static void main(String[] args) 
    {
        String l = sum(56);
        System.out.println(l);
    }
    static String sum(int x, int y) {
        String z = "λ§μ…ˆμ˜ κ²°κ³ΌλŠ” "+(x+y)+"이고 λ‘ μˆ˜λŠ” "+x+", "+y;
        return z;
    }
}
cs

μ½˜μ†” κ°’ : λ§μ…ˆμ˜ κ²°κ³ΌλŠ” 11이고 λ‘ μˆ˜λŠ” 5, 6


객체지ν–₯ μ–Έμ–΄λŠ” 정보와 κΈ°λŠ₯듀이 클래슀 μ•ˆμ— μžˆμ–΄μ•Όν•œλ‹€.

ν΄λž˜μŠ€λž€ 

였브젝트 클래슀λ₯Ό μƒμ†λ°›μ•„μ„œ Dog ν΄λž˜μŠ€κ°€ λœλ‹€.

였브젝트 클래슀λ₯Ό μƒμ†λ°›μ•„μ„œ Dog ν΄λž˜μŠ€κ°€ λœλ‹€.

μƒˆλ‘œμš΄ Dogν΄λž˜μŠ€λŠ” μžλ°”μ—μ„œ 기본으둜 μ œκ³΅ν•΄μ£ΌλŠ” 였브젝트 클래슀λ₯Ό μƒμ†ν•˜κΈ° λ•Œλ¬Έμ— 였브젝트 클래슀의 κΈ°λŠ₯을 기본적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.

Dog  - age, species, size, color

Dog λ₯Ό 클래슀 κ΄€μ μœΌλ‘œ 보면

클래슀 - λ³€μˆ˜ 이고

Dog λ₯Ό 객체 κ΄€μ μœΌλ‘œ 보면

객체 - 속성 이닀.


νŒ¨ν‚€μ§€κ°€ λ‹€λ₯Έ κ³³μ—μ„œ 정보λ₯Ό 뢈러였기 μœ„ν•΄μ„  μž„ν¬νŠΈλ₯Ό ν•΄μ€˜μ•Όν•œλ‹€.


μ‹€μ œ 객체 의 좔상화 와 μƒμ„±μž

μž…λ ₯된 정보가 μ΄λ™λ˜λŠ” μˆœμ„œλ₯Ό 도식화 ν•˜μ˜€λ‹€.

λ¨Όμ € javatest νŒ¨ν‚€μ§€μ— μžˆλŠ” 메인 ν΄λž˜μŠ€μ—μ„œ 1번 같이 정보λ₯Ό μ£Όλ©΄ νž™μ— Dog객체가 λ‘œλ“œλœλ‹€.

2번의 νŒŒλΌλ―Έν„° λ³€μˆ˜λ‘œ λ“€μ–΄μ˜€κ²Œ 되고 3번으둜 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ λ‚΄μš©μ„μ •ν•˜κ³  (4) κ·Έ 값은 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜(5)의 정해진 값은 λ‹€μ‹œ 6번으둜 λŒμ•„κ°€μ„œ λ‚˜μ˜€κ²Œ λœλ‹€.

Dog()  <-κΈ°λ³Έ μƒμ„±μž
Dog(int age,String species,float size, String color) <-νŒŒλΌλ―Έν„°λ₯Ό 가진 μƒμ„±μž
     ^Arguments

μƒμ„±μž(클래슀λͺ…κ³Ό λ™μΌν•˜κ²Œ μ„ μ–Έ)λŠ” 리턴 νƒ€μž…μ΄ μ—†μ–΄μ•Όν•˜μ§€λ§Œ λ©”μ†Œλ“œ(κΈ°λŠ₯을 μ•Œμˆ˜ μžˆλŠ” λ©”μ†Œλ“œλͺ…)라면 리턴 νƒ€μž…μ΄ μžˆμ–΄μ•Όν•œλ‹€.


νŒŒλž‘ μŒμ˜κ°™μ΄ ν”„λ¦°νŠΈ κΈ°λŠ₯의 λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄ μ£Όκ³ 

메인 λ©”μ†Œλ“œμ—μ„œ μ‰½κ²Œ ν”„λ¦°νŠΈ ν•  수 μžˆλ‹€.


**κ²Œμ‹œνŒμ„ 화면에 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ , κΈ€μ œλͺ©, λ‚ μ§œ, μž‘μ„±μž, κΈ€λ‚΄μš©, 히트수, 4가지 ν•­λͺ©μ΄ λ‚˜νƒ€ λ‚˜λŠ” 5개의 글을 board 객체λ₯Ό μ΄μš©ν•˜μ—¬ μ €μž₯ν•˜κ³  λͺ©λ‘μ„ 화면에 ν‘œμ‹œν•˜μ‹œμ˜€.


javatest νŒ¨ν‚€μ§€μ˜ Main class

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.ezen.javatest;
 
import com.ezen.javaoop.Dog;
 
public class Main 
{
    public static void main(String[] args) 
    {
        Dog[] dogs = new Dog[5];
        dogs[0= new Dog("μ½”λ”©","22.01.03","smith"12);
        dogs[1= new Dog("νƒœκΆŒλ„","22.01.12""jun"45);
        dogs[2= new Dog("μš”λ¦¬λ²•","22.04.01""Choi"0);
        dogs[3= new Dog("μžλ°” μ½”λ”©","22.10.12""May"34561654);
        dogs[4= new Dog("연애비법","22.05.03""Bob"8465);
        System.out.println("κΈ€μ œλͺ©\t"+"λ‚ μ§œ\t\t"+"μž‘μ„±μž\t"+"히트수");
        for(int i =0;i<dogs.length;i++) {
            dogs[i].board();
        }
    }
}
cs

javaoop νŒ¨ν‚€μ§€μ˜ Dog class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.ezen.javaoop;
 
public class Dog
{
    public String title;
    public String date;  
    public String writer;
    public int hit;
    
    public Dog(String title,String date ,String writer ,int hit) 
    {
        this.title = title;
        this.date = date;
        this.writer = writer;
        this.hit = hit;
    }
    public void board() {
        System.out.printf("%s\t%s\t%s\t%d \n", title,date,writer, hit);    
    }
}
cs

 

μ½˜μ†” κ°’:

μ½˜μ†” κ°’

 

λŒ“κΈ€