GiantStepDEV
article thumbnail

1. ๋ฉ”์‹ ์ € ๊ธฐ๋Šฅ๊ณผ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ( ์ƒ์†๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ๋‘ ์‚ฌ์šฉ )

- ๋ฌธ๋ฒ•์ ์œผ๋กœ๋Š” ์ ํ•ฉํ•˜๋‚˜ ๋™์ ๋ฐ”์ธ๋”ฉx

NetworkAdapter2 (interface ๋ถ€๋ชจ ํด๋ž˜์Šค)

public interface NetworkAdapter2 {
    void connect();
    default void description() {
        System.out.println("์ž๋ฐ” 8์—์„œ ์ถ”๊ฐ€๋œ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•");
    }
}

Chat (Class ๋ถ€๋ชจ ํด๋ž˜์Šค)

public class Chat {
    Chat() {}
    // ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ
    void sendMsg() {
        System.out.println("๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.");
    }
    // ๋ฉ”์‹œ์ง€ ๋ฐ›๋Š” ๊ธฐ๋Šฅ
    void rcvMsg() {
        System.out.println("๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.");
    }
}

WiFi (์ž์‹ ํด๋ž˜์Šค)

class WiFi extends Chat implements NetworkAdapter2 {
    String company;
    String name;
    
    Wifi(String company, String name) {
        this.company = company;
        this.name = name;
    }
    
    @Override
    public void connect() {
        System.out.println(company + " WiFi์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
    }
    @Override
    public void sendMsg() {
        System.out.println(name + "์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.");
    }
    @Override
    public void rcvMsg() {
        System.out.println(name + "(์œผ)๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.");
    }
}

5G (์ž์‹ ํด๋ž˜์Šค)

class FiveG extends Chat implements NetworkAdapter2 {
    String company;
    String name;
    
    FiveG(String company, String name) {
        this.company = company;
        this.name = name;
    }
    
    @Override
    public void connect() {
        System.out.println(company + " 5G์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
    }
    @Override
    public void sendMsg() {
        System.out.println(name + "์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.");
    }
    @Override
    public void rcvMsg() {
        System.out.println(name + "(์œผ)๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.");
    }
}
์ƒ์†(extends)์€ 1๊ฐœ๋งŒ ๊ฐ€๋Šฅ(๋‹ค์ค‘์ƒ์† ์ง€์›X)
์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†(implements)์€ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€๋Šฅ

Main

import java.util.Scanner;

public class Interface2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. [1]Wi-Fi [2]5G : ");
        int num = sc.nextInt();

        if(num == 1) {
            WiFi wifi = new WiFi("SKT","ํ™๊ธธ๋™");
            wifi.connect();
            wifi.sendMsg();
            wifi.rcvMsg();
        } else {
            FiveG fiveg = new FiveG("KT", "์ž„๊บฝ์ •");
            fiveg.connect();
            fiveg.sendMsg();
            fiveg.rcvMsg();
        }
    }
}
์ž‘๋™์€ ์ž˜ ํ•˜๋Š”๋ฐ...
๋ฉ”์‹ ์ € ๊ธฐ๋Šฅ๊ณผ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋ฌถ์—ฌ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ๋ฐ”์ธ๋”ฉ ๋ถˆ๊ฐ€.
์ข‹์€ ์„ค๊ณ„๊ฐ€ ์•„๋‹˜.

์›ํ•˜๋Š” ๋ฐฉํ–ฅ์€ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ž๋™์œผ๋กœ ์ ํ•ฉํ•œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ
์‚ฌ์‹ค ์ž๋ฐ”๋งŒ์œผ๋กœ๋Š” ์ •๋ง ์ž๋™์œผ๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐพ๊ธฐ๋ž€ ๋ถˆ๊ฐ€ํ•˜๋‹ˆ ์ด๊ฑด ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ตฌํ˜„

 

2. ๋ฉ”์‹ ์ € ๊ธฐ๋Šฅ๊ณผ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ถ„๋ฆฌํ•œ '์ฝ”์ฝ”์•„ํ†ก' ํ”„๋กœ๊ทธ๋žจ

NetworkAdapter3 (interface ๋ถ€๋ชจ ํด๋ž˜์Šค)

public interface NetworkAdapter3 {
    void send(String msg);
}

WiFi

class Wifi implements NetworkAdapter3 {
    @Override
    public void send(String msg) {
        System.out.println("WiFi >> " + msg);
    }

5G

class FiveG implements NetworkAdapter3 {
    @Override
    public void send(String msg) {
         System.out.println("5G >>> " + msg);
     }

CocoaTalk

import java.util.Scanner;

public class CocoaTalk {
    private String to; // ์ƒ๋Œ€๋ฐฉ ์ด๋ฆ„
    private String msg; // ์ „๋‹ฌํ•  ๋ฉ”์‹œ์ง€
    
    public CocoaTalk() {
        Scanner sc = new Scanner(System.in);
        System.out.print("๋ฐ›๋Š” ์‚ฌ๋žŒ : ");
        to = sc.next();
        this.to = to;
    }
    
    public void writeMsg() {
        Scanner sc = new Scanner(System.in);
        System.out.print("๋ฉ”์‹œ์ง€ : ");
        msg = sc.nextLine();
        this.msg = "To. " + to + " : " + msg;
    }
    
    public void send(NetworkAdapter3 na) {
        na.send(msg);
    }
}

Main

import java.util.Scanner;

public class CocoaMain {
    public static void main(String[] args) {
        CocoaTalk cocoaTalk = new CocoaTalk();
        cocoaTalk.writeMsg();
        NetworkAdapter3 adapter3;
        Scanner sc = new Scanner(System.in);
        System.out.print("๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. [1]Wi-Fi [2]5G : ");
        int sel = sc.nextInt();
        if(sel == 1) adapter3 = new Wifi();
        else adapter3 = new FiveG();
        cocoaTalk.send(adapter3);
    }
}

NetworkAdapter3๋Š” interfaceํ•ด์„œ send()๋ฅผ ์„ ์–ธ.  send()์˜ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ ๋ชฐ๋ผ๋„ ๋จ.

 

NetworkAdapter3๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค๋“ค์€ send()์— ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋„ฃ๋Š”๋‹ค. 

๊ธฐ๋Šฅ์€ ๊ฐ ํด๋ž˜์Šค์— ๋งž๋Š” ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ถœ๋ ฅ (Wi-Fi, 5G)

 

๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” CocoaTalk์€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ์ „ํ˜€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค. ์˜ค์ง ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์—๋งŒ ์ง‘์ค‘

 

์ถ”ํ›„ ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋ฌด๋ฆฌ ์ถ”๊ฐ€๋œ๋‹ค ํ•œ๋“ค CocoaTalk ์†Œ์Šค๋ฅผ ๊ณ ์น  ํ•„์š” ์—†๋‹ค.

 

์ด์ฒ˜๋Ÿผ ์„œ๋กœ ๋А์Šจํ•œ ๊ด€๊ณ„ ..

์ฆ‰ ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ž๋ฐ”์˜ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค.

 

profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!