목록2024/02/02 (4)
사이먼's 코딩노트
[상속] Java는 객체지향 프로그램이다. Java와 같이 객체지향 프로그램은 최대한 중복을 없애는 것을 선호하는 편이다. 서로 다른 클래스가 같은 기능을 하는 메서드를 실행하는 것은 매우 비효율적인 일이라고 판단한다. 같은 계열의 클래스 즉, 비슷한 역할을 하는 설계도가 있다면 해당 설계도는 서로 상속하고 상속받는 역할을 하는 것이 좋다. 아래는 클래스끼리 상속받는 모습을 작성한 코드이다. public class Main { public static void main(String[] args) { 사람 a사람 = new 사람(); a사람.숨쉬다(); } } class 동물 { static void 숨쉬다() { System.out.println("숨쉬다."); } } class 사람 extends 동물..
[클래스와 메서드 2] 아래는 게임 참여자와 무기라는 클래스를 지정하여 속성을 부여하는 코드이다. public class Main { public static void main(String[] args) { Player p1 = new Player(); p1.name = "홍길동"; Weapon sword = new Weapon(); sword.type = "칼"; sword.damage = 1; p1.weapon = sword; Weapon bow = new Weapon(); bow.type = "활"; bow.damage = 2; Player p2 = new Player(); p2.name = "홍길순"; p2.weapon = bow; System.out.println(p2.weapon.type); ..
이번엔 포인터와 관련된 문제들을 풀어봅시다. 각 문제에는 문제와 조건이 있으니 해당 조건에 맞춰서 문제를 해결해봅시다. [문제 1] 변수 i의 값을 해킹해주세요. 조건 1 : i의 값을 직접 바꾸는 것은 안됩니다. 조건 2 : `i = 50;` 은 안됩니다. #include // 8바이트 int main(void) { int i = 30; int i2 = 30; int* p = &i; printf("p의 주소값 : %ld\n", (long)p); printf("포인터 p의 값 : %d\n", *p); *p = 50; printf("i : %d\n", i); // 출력 => i : 50 return 0; } 변수 i를 직접적인 수정말고 포인터를 이용해서 값을 바꿔야한다. 포인터 변수 p를 생성하여 i의 주..
[포인터] [컴퓨터의 구성] 1. CPU : 연산 기능 데이터 처리속도 : 매우 빠름 Read / Write 속도 : 매우 빠름 2. L1 Cache(캐시) 메모리 : 저장 기능 저장용량 : 작음 (보통 8 ~ 64KB) Read / Write 속도 : 매우 빠름 (L2보다 빠름) 3. L2 Cache 메모리 : 저장 기능 저장 용량 : 작음 (보통 64KB ~ 4MB) Read / Wrtie 속도 : 매우 빠름 4. 메모리 : 저장 기능 저장 용량 : 작음 (8GB) Read / Write 속도 : 빠름 5. 하드디스크 : 저장 기능 저장 용량 : 큼 Read / Write 속도 : 느림 6. PC를 관리하는 소프트웨어 : 운영체제(OS) OS가 메모리를 관리한다. 우리가 만든 C 프로그램은 운영체제의..