본문 바로가기
Java

2024_05_28_화

by 알케니브 2024. 5. 29.

혼자공] 05. 자바객체

 

2) ⭐⭐⭐⭐⭐객체지향 기본원리 (면접 필수 질문!!)

원리 내용
추상화 현실세계를 그대로 표현하기보다 중요한 측면에 주목, 상세내역을 없애 나가는 과정 interFace
상속성 Inheritance Super Class가 갖는 성질을 Sub Class에 자동으로 부여 PGM을 쉽게 확장할 수 있게 만드는 수단 Extends / Implements
(면접에서 설명할때는 두 가지 요소를 각각 비교해서 설명하기)
다형성 Polymotphysm 동일 Interface 서로 다르게 응답할 수 있는 특성 연관 Class위한 일관된 매개체를 개발하는 수단
OverLoading: 동일한 이름의 Operation(Method) 사용 가능
OverRiding: Super class의 Method를 sub Class에서 재정의
(면접에서는 OL을 중심으로 설명하고 OR을 곁들여서 설명하기)
Capsule화 객체의 상세 내역을 객체외부에 철저히 숨기고, 단순히 Message만으로 객체와 상호작용 객체 내부 구조와 실체 분리로 내부 반경이 PGM에 미치는 영향 최소화 유지보수 용이 Encapsulation

 


오늘의 코딩

  • ch05_ex02>>Week(num파일)
  • ch05_ex02>>EnumWeekEx
  • Car1Ex
  • Car
  • Car1Ex
  • Car3
  • Car3Ex
  • CardTest01
  • ConstrEx01
  • NumEx
  • SubscribeEx
  • ScoreEx2
  • ch06_ex09>>PakTest01
  • PersonEx
  • AccountEx

1. ch05_ex02>> Week(num파일), EnumWeekEx

package ch05_ex02;

public enum Week {
	//연속된 상수들중 하나를 선택할 수 있을때 enum을 사용
	MONDAY,
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
	SUNDAY
  • enum?: 서로 관련이 있는 상수들의 집합을 의미
package ch05_ex02;

import java.util.Calendar;

public class EnumWeekEx {

	public static void main(String[] args) {
		Week today = null;
		
		Calendar cal = Calendar.getInstance();
		int weekNum = cal.get(Calendar.DAY_OF_WEEK);
								//컴퓨터의 달력을 참고해 오늘의 날짜를 가져온다
					
		switch(weekNum)	{
			case 1:
				today = Week.SUNDAY; break;
			case 2:
				today = Week.MONDAY; break;
			case 3:
				today = Week.TUESDAY; break;
			case 4:
				today = Week.WEDNESDAY; break;
			case 5:
				today = Week.THURSDAY;  break;
			case 6:
				today = Week.FRIDAY;  break;
			case 7:
				today = Week.SATURDAY;  break;
		}
		
		System.out.println("오늘 요일: " + today);
		
		if(today == Week.SUNDAY)	{
			System.out.println("일요일에는 축구를 합니다.");
		} else {
			System.out.println("열심히 자바 공부합니다.");
		}
			
	}

}

 

  • 이 코드로 무엇을 배웠는가?: 컴퓨터의 달력 자료를 끌어오는 방법 
    ↳ 느낀점: 시간이나 다른 자료도 끌어와서 활용할 수 있지 않을까? 

8. CardTest01

package ch06_ex01;

class Card	{
	// 인스턴스 변수
	String kind; 
	int number;
	
	//클래스 변수
	static int width = 100;	
	static int height = 250;
	
	public Card()  {
		
	}
	public Card(String kind, int number)	{
				//kind 와 number에 다른 타입의 변수이름을 붙여야한다
		this.kind = kind;	//kind = kind 는 중복되는 이름이라 안됨, this 꼭 붙이기
		this.number = number;
	}
	
	
}


public class CardTest01 {

	public static void main(String[] args) {
		//객체1 생성 ---> 기본 생성자
		Card c1 = new Card();	//객체1 생성
		c1.kind = "Heart";	//인스턴스 변수
		c1.number = 7;
		System.out.println(" c1 : " + c1.kind + "," + c1.number);
		System.out.println("\n c1 : " + Card.width + "," + c1.height);
		
		//객체2 생성 ---> 생성자 (Memory + 인스턴스 변수 초기화)
		Card c2 = new Card("Spade", 4);	//객체2 생성
		System.out.println("\n c2 : " + c2.kind + "," + c2.number);
		System.out.println("\n c2 : " + Card.width + "," + c2.height);
		
		
		
		
	} 
	
}

 

 

숙제: person---> subscribeEX 참고

 

package hw04_0528;

class Person {
	public String name;
	private int    age;
	private String gender;
	
	Person (String n, int a, String g)	{
		name	= n;
		age		= a;
		gender  = g;
	
	}
	Person (String n)	{
		name = n;
		
	}
	void chgAge(int a)	{
		age = a;
	}
	
	void chgGnd(String g)	{
		gender = g;
	}
	void print() {
		 System.out.println("이름:" +name+" 나이 :"+age+" 성별 :" +gender);
	}
}

public class PersonEx_hw {

	public static void main(String[] args) {
		// Instance per11 , per12, per13
		Person s1 = new Person("홍  길동", 52, "M");
		Person s2 = new Person("연개소문", 62, "M");
		Person s3 = new Person("선덕여왕", 72, "F");
		s1.print();
		s2.print();
		s3.print();
		

	}

}

'Java' 카테고리의 다른 글

2024_06_04_화  (0) 2024.06.04
2024_06_03_월  (0) 2024.06.03
2024_05_31_금  (0) 2024.05.31
2024_05_30_목  (0) 2024.05.30
2024_05_29_수  (0) 2024.05.29