수업

+16 멤버 변수(static, instance)

hs_developer 2022. 5. 24. 16:07

 

// 다른 공간
c1.number = 3
c1.image = ♣
c2.number = 5
c2.image = ♣

// 같은 공간
c1.width = 200
c1.height = 250
c2.width = 200
c1.height = 250
class Card
{
	int number; // 인스턴스
	String image;
	static int width; // 정적
	static int height;
}

public class 클래스구성요소 {
	
	public static void main(String[] args) {
	
		Card c1 = new Card();
		
		c1.number = 3;
		c1.image = "♣";
		c1.width = 150;
		c1.height = 180;
		
		Card c2 = new Card();
		
		c2.number = 5;
		c2.image = "♣";
		c2.width = 200;
		c2.height = 250;
		
		// 인스턴스 변수 : 다른 공간
		System.out.println("c1.number = " + c1.number);
		System.out.println("c1.image = " + c1.image);
		
		System.out.println("c2.number = " + c2.number);
		System.out.println("c2.image = " + c2.image);
		
		// 정적 변수 : 같은 공간
		System.out.println("c1.width = " + c1.width);
		System.out.println("c1.height = " + c1.height);
		
		System.out.println("c2.width = " + c2.width);
		System.out.println("c2.height = " + c2.height);
		
	}
	
}

 

 


 

DB 이용해 맛집 리스트 불러오기

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1. 믿고 보는 맛집 리스트
2. 지역별 맛집 리스트
3. 인기 메뉴별 맛집 리스트
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
카테고리 선택: 1 // 카테고리 1번 입력 시 카테고리 12번까지 출력
1
"돈가스 맛집 베스트 30곳"
"돈알못도 눈물 흘리며 먹는다는 그 식당!"
==================================================
.
.
30
"2022 브런치 인기 맛집 TOP 50"
"하루의 시작은 맛있는 브런치로!"
==================================================
카테고리 번호: 1
제목: 돈가스 맛집 베스트 30곳
부제목: "돈알못도 눈물 흘리며 먹는다는 그 식당!"
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
.
.
카테고리 번호: 12
제목: 가성비 데이트 맛집 베스트 25곳
부제목: "가심비, 가성비 다 잡은 맛집 리스트가 필요해?"
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

class Category
{
	int cateNo; // 1-30번째 맛집 → 클릭 시 상세 보기 이동
	String title;
	String subject;
}

class Food
{
	
}


public class 맛집db {
	
    static Category[] cate=new Category[30]; //초기값
    // 구현
    static {
    	// 초기화 블록
    	try
        {
        	Document doc=Jsoup.connect("https://www.mangoplate.com/").get();
        	Elements title=doc.select("div.top_list_slide span.title");
        	Elements subject=doc.select("div.top_list_slide p.desc");
        	Elements poster=doc.select("div.top_list_slide img.center-croping");
        	Elements link=doc.select("div.top_list_slide ul.list-toplist-slider a");
        	for(int i=0;i<title.size();i++)
        	{
        		cate[i]=new Category();
        		cate[i].cateNo=i+1;
        		cate[i].title=title.get(i).text();
        		cate[i].subject=subject.get(i).text();
        		System.out.println((i+1));
        		System.out.println("\""+title.get(i).text()+"\"");
        		System.out.println(subject.get(i).text());
        		
        		System.out.println("==================================================");
        	}
        }catch(Exception ex){}
    }
    
}
public static void main(String[] args) {
		
    Scanner sc = new Scanner(System.in);
    System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
    System.out.println("1. 믿고 보는 맛집 리스트");
    System.out.println("2. 지역별 맛집 리스트");
    System.out.println("3. 인기 메뉴별 맛집 리스트");
    System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");

    System.out.print("카테고리 선택: ");
    int no = sc.nextInt();

    for(int i=0; i<맛집db.cate.length; i++)
    {
        if(no==1)
        {
            if(i>=0 && i<12)
            {
                System.out.println("카테고리 번호: " + 맛집db.cate[i].cateNo);
                System.out.println("제목: " + 맛집db.cate[i].title);
                System.out.println("부제목: " + 맛집db.cate[i].subject);
                System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
            }
        }
        else if(no==2)
        {
            if(i>=12 && i<18)
            {
                System.out.println("카테고리 번호: " + 맛집db.cate[i].cateNo);
                System.out.println("제목: " + 맛집db.cate[i].title);
                System.out.println("부제목: " + 맛집db.cate[i].subject);
                System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
            }
        }
        else if(no==3)
        {
            if(i>=18 && i<30)
            {
                System.out.println("카테고리 번호: " + 맛집db.cate[i].cateNo);
                System.out.println("제목: " + 맛집db.cate[i].title);
                System.out.println("부제목: " + 맛집db.cate[i].subject);
                System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
            }
        }
    }
}

 


 

ㅡㅡㅡㅡ 메뉴 ㅡㅡㅡㅡ
1. 사원 등록
2. 사원 목록
3. 사원 수정
4. 사원 삭제
9. 프로그램 종료
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

메뉴 선택: 
1
사번 입력: 
1
이름 입력: 
aaa

메뉴 선택: // 같은 곳에 모두 출력해야 하기 때문에 static 사용(**)
2
사번: 1
이름: aaa
// 일반 데이터 → 모아서 1개의 데이터로 만들기 (사용자 정의 데이터형) = class
public class Sawon {

	int sabun;
	String name;
	String dept;
	String job;
	String loc;
	int pay;
	
}
public class SawonController {

	static Sawon[] sawon = new Sawon[20];
	static int index = 0; // 끝날 때까지 프로그램 유지
	
	// 1. 사원 등록
	static void insert(Sawon sa)
	{
//		SawonController sc = new SawonController();
		sawon[index]=sa;

	}
	
	// 2. 사원 목록
	static void list()
	{
//		SawonController sc = new SawonController();

		for(Sawon s:sawon)
		{
			if(s!=null)
			{
				System.out.println("사번: " + s.sabun);
				System.out.println("이름: " + s.name);
				System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
			}
		}
	}
}
public static void main(String[] args) {
		
	Scanner scan = new Scanner(System.in);
	SawonController sc = new SawonController(); // 뭐에 쓰는 거지??

	while(true)
	{
		System.out.println("ㅡㅡㅡㅡ 메뉴 ㅡㅡㅡㅡ");
		System.out.println("1. 사원 등록");
		System.out.println("2. 사원 목록");
		System.out.println("3. 사원 수정");
		System.out.println("4. 사원 삭제");
		System.out.println("9. 프로그램 종료");
		System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
		
		System.out.println("메뉴 선택: ");
		int m = scan.nextInt();
		
		if(m==9)
			break;
		else if(m==1)
		{
			System.out.println("사번 입력: ");
			Sawon ss = new Sawon();
			ss.sabun = scan.nextInt();
			
			System.out.println("이름 입력: ");
			ss.name = scan.next();
			
			System.out.println("부서명 입력: ");
			ss.dept = scan.next();
			
			System.out.println("근무지 입력: ");
			ss.loc = scan.next();
			
			System.out.println("직위 입력: ");
			ss.job = scan.next();
			
			System.out.println("급여 입력: ");
			ss.pay = scan.nextInt();
			
			sc.insert(ss);
			sc.index++;
		}
			
		else if(m==2)
		{
			sc.list();
		}
	}
}

 

 

 

오늘 수업 요점

 

인스턴스 변수는 new 사용 시마다 따로 메모리 생긴다.
static 변수는 new 상관 없이 1개의 메모리만 생긴다.

 

 

필독

1. 자바 정석
p242-243
p246-249

 

2. 객체 지향 정리 문서

 

객체지향정리.docx
0.53MB

 

객체 지향 중요하니까.. 관련 문서 잘 읽고 정리해서 업로드하기

'수업' 카테고리의 다른 글

+18 생성자, 초기화 블럭 (static, instance)  (0) 2022.05.26
+17 멤버 메소드  (1) 2022.05.25
+15 객체 지향, 클래스 데이터형 제작  (1) 2022.05.23
+14 메소드 활용  (0) 2022.05.20
+14 메소드 정리(매개변수)  (0) 2022.05.20