자바 11일차

선장원·2021년 10월 18일

자바

목록 보기
13/24

11일차 (10/18)

오늘은 문제 풀어보기 위주

클래스

  1. 필드, 생성자, 메서드
    a. 필드의 역할
    b. 생성자의 역할
    c. 메서드의 역할
  2. 생성자
    a. 기본생성자, 매개 변수가 있는 생성자
    b. 생성자 오버로딩
  3. 메서드
    a. 리턴 유무
    - 리턴유무 구분
    - 리턴 유무에 따른 호출 방법
    b. 매개변수 유무
  4. 객체를 다룰 때
    a. 활용할 수 있는 데이터의 형태는 무한대이다.
    - 기본형 타입은 물론이고 모든클래스 타입을 다 다룰 수 있다
    - 매개변수도 모든 타입이 올 수 있다.
    - 리턴도 모든 타입이 올 수 있다.

@Override 어노테이션

메서드 재정의 할 때 사용하는 어노테이션

toString()

클래스에서 마우스 오른쪽 클릭
source >> generate toString >> generate

클래스에서의 사용

메인 클래스에서 사용법

출력

실습

교육생 등록 객체 연습

  1. 객체로 표현하고자 하는 대상
    a. 인천 일보 아카데미 교육생
    - 클래스이름: Trainee
    - 필요정보 : 이름 나이 전화번호 전공 유무
  2. TraineeMain클래스
    a. 신규교육생 등록
    1) 이름 나이 전화번호 전공유무를 모두 등록 할 수 있다.
    2) 이름 전화번호로 신규교육생 등록후 나이 전공유무는 추후 등록
    - 추후 등록을 위해 afterSignup메서드를 활용한다
    - 리턴 없음
    - 매개변수 : 나이 전공유무
    - 나이 전공 유무 등록 후 등록완료 출력
    b. 개인정보 변경
    1) 전화 번호 변경
    2) phoneNumberUpdate메서드
    - 리턴 없음
    - 매개변수 : 전화번호
    - 번호 변경후 변경완료 출력

메인 클래스

		// 교육생 등록
		Trainee t1 = new Trainee("선장원", 27, "010-1234-5678", false);
		
		// 등록 확인
		System.out.println(t1.name);
		System.out.println(t1.age);
		System.out.println(t1.phone);
		System.out.println(t1.major);
		
		// 나이 전공유무 변경
		t1.afterSignUp(28,true);
		System.out.println("age major 변경후");
		System.out.println(t1.name);
		System.out.println(t1.age);
		System.out.println(t1.phone);
		System.out.println(t1.major);
		
		// 폰번호 변경
		t1.phoneNumberUpdate("010-2345-6789");
		System.out.println("phone 변경후");
		System.out.println(t1.name);
		System.out.println(t1.age);
		System.out.println(t1.phone);
		System.out.println(t1.major);
		
		
		
		// 이름 전화 번호 등록 후 나중에 등록
		Trainee t2 = new Trainee("선장원2","010-3456-7890");
		System.out.println(t2.name);
		System.out.println(t2.age);
		System.out.println(t2.phone);
		System.out.println(t2.major);
		
		
		t2.afterSignUp(29, true);
		System.out.println("t2 age major 변경후");
		System.out.println(t2.name);
		System.out.println(t2.age);
		System.out.println(t2.phone);
		System.out.println(t2.major);
		
		t2.phoneNumberUpdate("010-1234-1234");
		System.out.println(" t2 phone 변경후");
		System.out.println(t2.name);
		System.out.println(t2.age);
		System.out.println(t2.phone);
		System.out.println(t2.major);

클래스 객체

	// 이름 나이 휴대폰번호 전공유무
	String name = ""; // 이름
	int age = 0; // 나이
	String phone = ""; // 전화번호 - 도 넣어야해?
	boolean major = false; // 전공
	
	Trainee(){// 기본 생성자
		
	}
	
	
	// 신규 교육생 등록 이건 생성자로 만들으라는건가?
	Trainee (String name, int age, String phone, boolean major){ // 기본 생성자
		this.name = name;
		this.age = age;
		this.phone= phone;
		this.major= major;
		
	}
	
	// 이름 폰번호로 등록 후 전동 유무는 추후 등록
	Trainee (String name, String phone){
		this.name = name;
		this.phone= phone;
//		this.age = 0;  이거 두개는 없어도 되는거네?
//		this.major= false; 어차피 0과 false로 저장이 되어 있으니 초기값으로 그냥 나오는구나
	}
	
	
	
	
	//afterSignup메서드
	void afterSignUp (int age, boolean major ){
		this.age = age;
		this.major = major;
		System.out.println("나이 전공 유무 등록 완료");
	}
	
	
	
	// phoneNumberUpdate메서드
	void phoneNumberUpdate (String phone) {// 이걸 새로 변수를 사용해도 되네
		this.phone = phone;
		System.out.println("폰 번호 변경 완료");
	}

회원가입 로그인 객체 연습

Member 클래스
1. 회원정보
- 아이디 비밀번호 이름 이메일
MemberMain
1. 회원가입 방식 두가지
a. 회원 가입시 모든 정보를 이용하여 가입
b. 회원 객체 생성 후 memberJoin 메서드를 이용하여 가입
- 모든 정보를 매개변수로 함.
- 모든 정보 가입 후 '가입완료' 출력
2. 회원 로그인 기능
a. memberLogin 메서드를 호출하여 호출결과에 따라 아래와 같이 처리
1) 아이디, 비밀번호 모두 일치하면 로그인 성공 출력
2) 아이디, 비밀번호 중 하나라도 일치하지 않으면 로그인 실패 출력
3) 위의 로그인 성공/실패 출력문은 MemberMain 클래스에 존재함.
b. memberLogin 메서드
- 리턴타입 : boolean
- 매개변수 : 아이디 비밀 번호
3. myInfo 메서드
a. myInfo 메서드를 호출하면 내 정보를 모두 출력해준다.
b. 로그인여부 상관하지 않아도 됨.
4. 회원정보 수정 기능
a. memberUpdate 메서드
- 리턴 없음
- 매개변수 : 이메일
- 이메일 주소 변경 후 변경완료 출력

메인클래스

		// 로그인 시스템?
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		Member m1 = new Member();
		String id = "";
		String pw = "";

		m1.memberJoin("captain", "1234", "선장원", "wkddnjs");

		System.out.println(m1.id);
		System.out.println(m1.pw);
		System.out.println(m1.name);
		System.out.println(m1.email);

		System.out.print("아이디 입력 : ");
		id = br.readLine();
		System.out.print("비밀번호 입력 : ");
		pw = br.readLine();

		if (m1.memberLogin(id, pw)) {// 조건식에 boolean값 변수를 넣어서 만들기도 하네
			System.out.println("로그인 성공");
		} else {
			System.out.println("로그인 실패");
		}

		m1.myInfo();

		m1.memberUpdate("naver");

		m1.myInfo();
		System.out.println(m1);

		Member loginMember = new Member();
		loginMember.id = "captain";
		loginMember.pw = "1234";
		
		boolean loginResult = false;
		// loginMember 객체를 memberLogin2 메서드에 전
		loginResult = m1.memberLogin2(loginMember);
		if (loginResult) {
			System.out.println("로그인 성공");
		} else {
			System.out.println("로그인 실패");
		}

클래스 객체

	// 아이디 비밀번호 이름 이메일주소
	String id = "";
	String pw = "";
	String name = "";
	String email = "";

	Member() { // 기본

	}

	Member(String id, String pw, String name, String email) {
		this.id = id;
		this.pw = pw;
		this.name = name;
		this.email = email;
	} // 모든 정보 입력 가입

	void memberJoin(String id, String pw, String name, String email) {
		this.id = id;
		this.pw = pw;
		this.name = name;
		this.email = email;
		System.out.println("가입 완료");
	}

	boolean memberLogin (String id2, String pw2) {
		if (this.id.equals(id2) && this.pw.equals(pw2)) {
			
			return true;
		} else {
			return false;
			
		}

	}
	
	void myInfo () {
		System.out.println("아이디 : "+id);
		System.out.println("비밀번호 : "+pw);
		System.out.println("이름 : "+name);
		System.out.println("이메일 : "+email);
	}
	
	void memberUpdate (String email) {
		this.email = email;
		System.out.println("변경 완료");
	}
	String loginResult = "";
	// 로그인 2 메서드
	boolean memberLogin2 (Member loginMember) {
		boolean result = false;
		if (loginMember.id.equals(this.id) && loginMember.pw.equals(this.pw)) {
			result = true;
		} else {
			result = false;
		}
		return result;
	}
	
	
	
	
	
	//toString 메서드
	// 리턴 타입 : String
	@Override // 메서드 재정의 할 때 사용하는 어노테이션 (Annotation)
	public String toString() {
		return "Member [id=" + id + ", pw=" + pw + ", name=" + name + ", email=" + email + "]";
	}

로그인 정보를 입력할 때 변수를 활용해서 해도 가능

		Member loginMember = new Member();
		loginMember.id = "captain";
		loginMember.pw = "1234";
		
		boolean loginResult = false;
		// loginMember 객체를 memberLogin2 메서드에 전
		loginResult = m1.memberLogin2(loginMember);
		if (loginResult) {
			System.out.println("로그인 성공");
		} else {
			System.out.println("로그인 실패");
		}

내가 머리를 써서 직접 생각해서 그런가 엄청 피곤하네
남는 시간이 너무 많다
백준 알고리즘 이상한 수학문제가 너무 많아 어려워 ㅠㅠ

profile
코딩도전기

0개의 댓글