본문 바로가기
개발 공부 Today I Learned

[국비 19일차 TIL] 자바 객체지향(속성, 생성자, 메소드), C언어, 파이썬

by 개발자신입 2023. 12. 15.
반응형

- 객체 지향 프로그래밍

  • apple 패키지
  • AppleSeller 클래스
  • AppleBuyer 클래스

 

* 일반적인 순서 : 필드(멤버 변수) - 생성자 - 메소드

 

 

  • 클래스 이름은 대문자로 시작 (메소드는 소문자로 시작)

 

- 필드

선언 및 초기화. 객체의 상태를 저장하고 유지.

 

- 생성자 

반환값이 없음!

클래스 내부에 정의, 클래스와 동일한 이름이여야 함.

자바에서 클래스에 생성자가 명시적으로 정의되지 않은 경우, 컴파일러는 기본 생성자(default constructor)를 자동으로 생성

 

  1. 필드 초기화: 생성자를 사용하여 객체가 생성될 때 필드를 초기화합니다.
  2. 매개변수 전달: 생성자를 통해 객체에 필요한 초기값을 전달받을 수 있습니다.
  3. 객체 초기 설정: 객체의 초기 상태를 설정하거나 다른 초기화 작업을 수행합니다.
  4. 자원 할당 및 해제: 생성자에서 자원을 할당하거나 소멸자에서 자원을 해제하는 작업을 수행할 수 있습니다.

 

- 메소드

객체의 특정 동작을 구현하며, 필드에 저장된 데이터를 처리하거나 다른 메소드를 호출하여 작업을 수행하는 역할

 

  1. 이름: 메소드는 이름을 가지며, 해당 이름을 사용하여 메소드를 호출합니다. 클래스명과 다를 수 있음.
  2. 매개변수: 필요에 따라 메소드에 매개변수를 전달할 수 있습니다.
  3. 반환값: 메소드는 작업을 수행한 결과를 반환할 수 있습니다. 반환값이 없는 경우에는 void라고 표시합니다.
  4. 접근 제어자: 메소드에는 접근 제어자를 사용하여 해당 메소드의 접근 범위를 지정할 수 있습니다.
  5. 구현: 메소드는 중괄호 {} 안에 구현되어야 하며, 해당 메소드가 수행할 코드를 포함합니다.

 

package apple;
// 두 인스턴스가 발생하는 장소

public class Apple {
	public static void main(String[] args) {
		
		AppleSeller seller = new AppleSeller();
		AppleBuyer buyer = new AppleBuyer();
		
		buyer.buyApple(seller, 5000);
		seller.tellSeller();
		buyer.tellBuyer();
	}
}

 

 

- APPLE_PRICE : 상수이기 때문에 대문자로 표기

 

package apple;
// 사과를 파는 사람

public class AppleSeller {   // 속성 (필요한 정보)
	
	final int APPLE_PRICE = 1000; 	// 상수(대문자)
	int appleCount = 50;	// 개수
	int sellerMoney = 0;	// 보유 금액
	
/////// 생성자 (사과를 파는 기능) ///////
	
	public int sellApple(int money) {
		int num = money / APPLE_PRICE;	// 받은 돈 -> 내 돈에 저장
		sellerMoney += money;	// 줄 사과 -> 내 사과에서 빼기
		appleCount -= num;
		return num;
	}
	
	// 내 정보를 말하는 기능 tellSeller
    
	public void tellSeller() {
		System.out.println("판매자의 남은 사과는 " + appleCount + "개 입니다.");
		System.out.println("판매자의 수익은 " + sellerMoney + "원 입니다.");
	}
}

 

package apple;	// 사과를 사는 사람


public class AppleBuyer {	// 속성
	
	int appleCount;		// 가지고 있는 사과의 수
	int buyerMoney = 10000;		// 보유 금액
	
	public AppleBuyer() {		// 기본 생성자
		
	}

	// 사과를 사는 기능
	public void buyApple(AppleSeller seller, int money) {
		int num = seller.sellApple(money);  // 구매한 사과 수
		
		appleCount += num;  // 내 사과 수에 더하기
		buyerMoney -= money; // 내 돈에서 빼기
	}
	
	
	// 내 정보를 말하는 기능 tellBuyer
    
	public void tellBuyer() {
		System.out.println("구매자가 구매한 사과는 "+ appleCount + "개 입니다.");
		System.out.println("구매자의 남은 돈은 "+buyerMoney+"원 입니다.");
	}
}

 

 

 

setter, getter 를 메뉴에서 자동으로 작성이 가능함.

메뉴 Source - Generate Getters and Setters

 

void = 리턴이 없음.

void 이외의 타입에는 return이 필요함

 

public class Human {
	String name;
	int age;
	String addr;
	int money;
	
	public Human(String name, int age) {  // 생성자
		this.name = name;
		this.age = age;
	}
	
	public String getName() { // 메소드를 생성해서 다른 패키지에서 불러오기 가능
		return name;
	}
	
	// setter
	// getter
	
	public void setMoney(int m) { // 돈 저장
		this.money = m;
	}
	
	public int getMoney() { // 돈 가져오기
		return money;
	}
	
	////////////// setter
	public void setAddr(String addr) {
		this.addr = addr;
	}
	////////////// getter
	public String getAddr() {
		return this.addr;
	}
	
}


----------------------------------------------


public class Test01 {
	public static void main(String[] args) {
		
//		Human h1 = new Human(); // 기본 생성자
		Human h1 = new Human("홍길동", 150);
		System.out.println(h1.getName());
		
		h1.setMoney(5000);
		System.out.println(h1.getMoney());
		
		h1.setAddr("서울시");
		String addr = h1.getAddr();
		System.out.println(addr);
	}

}

 

 

	public static void main(String[] args) {

		String str1 = "Programming";
		String str2 = "Programming";
		String str3 = new String("Programming");
		System.out.println(str1 == str2); // true
		System.out.println(str1 == str3); // false
		System.out.println(str1.equals(str3)); // true
		System.out.println(str2.equals(str3)); // true
	}
}

- C언어 예제

#include <stdio.h>

// standard input output

int main() {
    int num = 100; // 변수지정
    printf("%d\n", num + 1);
    printf("%d", num + 1);

    char ch1[] = "apple";
    printf("%s\n",ch1);

    // 포인터 선언
    int *pointer; // 메모리에 접근해서 해당 위치의 문자 추출,* 참조 연산자
   
    char *ch = "KOREA";
    printf("%s\n", ch);
    printf("%s\n", ch+3); // 3번째 문자부터 (EA)
    printf("%c\n", *(ch+3)); // (E)
    printf("%c\n", *ch+3); // K가 가진 값에서 + 3 (KLMNOPQR에서 N)
   
    return 0;
}

 

 

- C언어 정보처리기사 실기 기출문제

#include <stdio.h>

int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;
  // [12, 24, 36]

   
  printf("%d\n", *arr[1] + **arr + 1); // ** 배열 자체
  return 0;

    // 24 + 13 = 37
   
}

 

 

 

#include <stdio.h>

void align(int a[ ]) { // 배열 정렬하기
int temp;
for (int i = 0; i < 4; i++) {
  for (int j=0; j < 4 - i; j++)  {
    if (a[j]> a[j+1]) {
      temp = a[j];
      a[j] = a[j+1];
      a[j+1] = temp;
    }
  }
}
}

int main( ) {
    int a[ ] = { 85, 75, 50, 100, 95 };
    align(a);
     for (int i = 0; i < 5; i++) printf("%d ", a[i]);

  return 0;
    // 50 75 85 95 100
}

 

 


- 파이썬

 

주석처리

# 한 줄 주석

 

"""

여러줄 주석 또는 ''' 3

 

num = 100

if num == 100:
    print("100 맞아")
else:
    print("100아님")

print("if문 밖")

print(num in [100,200,300]) # 뒤의 배열 안에 num값이 있냐
def exam(num1, num2):  # 함수 선언
    print(num1 + num2)

exam(11,22)


def exam(num1, num2 = 2):  # num2에 2를 입력
    print(num1 + num2)

exam(11)


def exam(num1, num2 = 2):
    print('a=', num1, 'b=', num2)

exam(11,2) # a= 11 b= 2 (띄어쓰기 필수!)

 

True/False 대문자로 써야함.

a,b = 100, 200
print(a==b)    # False (대문자 필수!!)


a = 100
result = 0
for i in range(1,3):
    result = a >> i
    result = result + 1
print(result)

                 # 01100100 = 100
print(100 >> 1)  # -0110010 = 50
print(100 >> 2)  # --011001 = 25
list = ['홍길동', '김길동', '이길동', '박길동']
for i in list:
    print(i)

for i in range(1, 10): # 1~10까지 돌려서 나오는 값을 i로
    print(i) # 1 2 3 4 5 6 7 8 9
class good :
    li = ["seoul", "gyeonggi", "incheon"]

g = good()
str01 = ''
for i in g.li:
    str01 = str01 + i[0]

print(str01) # 배열이 앞 글자만 따옴 (= sgi)
반응형

댓글