0829 java

정혜지·2022년 10월 5일

2022.08.29

/* 접근 제한자(Access modifier)

  • modifier[제어자]
  1. access modifier
    • 적용되는 위치
      1. 클래스 선언구 : public, default
      2. 변수 선언구 : public, protected, default, private
      3. 생성자 선언구 : public, protected, default, private
      4. 메소드 선언구 : public, protected, default, private
    • 호출가능한 범위 제한
    1. public : 동일한 클래스, 동일한 package, 외부 package에서 호출 가능
    2. protected : 동일한 클래스, 동일한 package,
      단, 상속관계의 외부 package의 클래스에선 호출 가능
    3. default[friendly]
      - 동일한 package에서만 access 가능
    4. private : 동일한 class 내에서만 access 가능
  2. 기타 modifier
    - 옵션
    1. static
    1. 변수 - 공유자원
    2. 메소드 - 객체 생성없이 메소드 호출 가능 기능만 제공
    3. static{} - 공유자원 단 1번 실행, byte code가 로딩시 단 한번 실행
    	2. abstract
    		- 추상
    	3. final
    	4. synchronized
    */

// model.domain

public class People {
// 멤버 변수
String name;
int age;

// 기본생성자 : 사용자 정의 생성자가 있는 경우에는 반드시 개발자가 지정!!!
People() {}

// 사용자 정의 생성자 : 객체 생성 시, 초기화
People(String name, int age) {
	this.name = name;
	this.age = age;
}

// 메소드
String getName() {
	return name;
}

int getAge() {
	return age;
}

void setAge(int age) {
	if (age > 0) {
		this.age = age;
	}else {
		System.out.println("지정한 나이로 update 할수 없음");
	}
}

}

/* 도메인 모델(Domain Model)

    • 객체 지향 분석 설계 기반으로 구현하고자 하는 도메인(비즈니스 영역)의 모델을 생성하는 패턴
    • 도메인에서의 객체 판별, 목록 작성, 객체간의 관계
    • 속성과 기능 분리
    • 단순 : 테이블 하나 = 하나의 도메인 객체
    • 재사용성, 유지보수 용이, 확장성
    • 모델 구축의 어려움
      */

package step02;

import model.domain.People;

public class Ex06Practice {

// Q1.
/* 매개변수로 들어오는 값을 비교하여 같을 경우 true를 반환하는 메소드 개발 - 메소드명 : checkAdmin / 반환값 :
 * boolean / static
 * 개발 후 실행결과 확인
 * step01 -> Condition의 if문 활용하여 메소드 개발 
 * 		-> 메소드명은 checkAdmin, 입력 id값이 admin1 or admin2일 때 "관리자 접속 성공" 문자열 출력
 * 		-> 실패 시 "관리자 접속 실패" 문자열 출력
 */ 


// Q2.
/* 매개변수로 들어오는 값 비교하여 월(~4월까지만) 확인 메소드 개발 - 함수명 : checkMonth / 반환값 없음 / static
 * step01 -> Condition의 switch / case문 활용하여 메소드 개발
 */

static void checkMonth(int month) {
switch (month) {
case 1:
System.out.println(month + "월 입니다.");
break;
case 2:
System.out.println(month + "월 입니다.");
break;
case 3:
System.out.println(month + "월 입니다.");
break;
case 4:
System.out.println(month + "월 입니다.");
break;
default:
System.out.println("잘못된 값입니다.");
break;
}
}

static People[] peopleArray() {
	People p1 = new People("Java", 26);
	People p2 = new People("IT", 29);
	People[] v = {p1, p2};
	return v;
}

//Q3. printPeopleName 메소드 개발
/* printPeopleName(People[] v){} - 배열 내부의 모든 사람 이름 출력 - name 변수는 직접적인 접근 불가 :
 * private - getName() 호출 가능 : public - for문 활용하여 출력 - 호출만으로 이름 출력할 것
 */

static void printPeopleName(People[] people) {
// for(int i = 0; i < people.length; i++) {
// System.out.println(people[i].getName());
// }

	for(People person : people) {
		System.out.println(person.getName());
	}
}

public static void main(String[] args) {
	String id = "admin3";
	checkAdmin(id);
	
	int month = 2;
	checkMonth(month);
	
	People[] v = peopleArray();
	printPeopleName(v);
}

}

/ 싱글톤 패턴(Singleton Pattern)
- 하나의 객체만 만들어서 내부적인 메소드 혹은 정보를 사용하는 경우
- 자원 절약 가능
프린터 드라이버
여러 컴퓨터에서 프린터 한대를 공유하는 경우
하나를 끝내고 다음 작업을 하는 것이 아닌 동시에 섞여 나오면 안될 것임.
Singleton 패턴: 여러 클라이언트(컴퓨터)가 동일 객체(공유 프린터)를 사용하지만 한 개의 객체(프린트 명령을 받은 출력물)가
유일하도록 상위 객체가 보장하도록 하는 것
동일한 자원이나 데이터를 처리하는 객체가 불필요하게 여러 개 만들어질 필요가 없는 경우에 주로 사용
/

[학습]
1. MVC 패턴
- https://www.oracle.com/technical-resources/articles/javase/mvc.html
- 어플리케이션을 계층별로 구분 하는 패턴
- 구조
- M Model : 핵심 로직
- V View : 출력 로직
- C Controller : View와 Model 연결 로직

profile
오히려 좋아

0개의 댓글