no image
[C 이론] 12. 포인터(2)
인수 전달 방법 : 함수 호출 시 인수 전달 방법 값에 의한 호출(Call By Value) 기본적인 방법 함수로 값의 복사본이 전달된다. 실제 값 자체는 바뀌지 않는다. 참조에 의한 호출(Call By Reference = Call By Address) 함수로 원본(주소값)이 전달된다. 주소에 의한 전달이므로 실제 값 자체가 바뀐다. 값에 의한 호출 VS 참조에 의한 호출 값에 의한 호출(Call By Value) #include void swap(int x, int y); int main(void) { int a = 100, b = 200; printf("a=%d b=%d\n",a, b); swap(a, b); printf("a=%d b=%d\n",a, b); return 0; } // 함수에서의 값..
2021.06.01
no image
[C 이론] 11. 포인터(1)
포인터(Pointer) : 프로그래밍 언어에서 다른 변수의 메모리 주소를 가리키는 변수 다른 언어와는 차별화된 C만의 특징 포인터를 이용하면 직접 메모리 내용에 접근하여 조작할 수 있다. 포인터는 메모리의 주소를 의미한다. 포인터 변수는 메모리의 주소 값을 저장하는 변수이다.└ (데이터가 저장된 곳, 즉 메모리 주소를 가진다.) 메모리 매핑 하드웨어 : 외부 장치를 메모리처럼 접근할 수 있다. 참조에 의한 호출 : 함수 외부 변수의 수정과 여러 개의 값을 반환할 수 있다. 동적 메모리 할당 : 프로그램 실행 도중 메모리를 할당할 수 있다. 변수와 메모리 변수의 크기에 따라서 차지하는 메모리 공간이 달라진다. char 형 변수 : 1바이트 int 형 변수 : 4바이트 변수의 주소 & : 변수의 주소를 계산..
2021.06.01
no image
[C 이론] 10. 배열
데이터 유형에 따른 사용 상수(constants) : 고정된 값을 사용 변수(variable) : 모든 데이터를 각각 독립적으로 사용 배열(array) : 동일한 데이터 타입의 변수를 묶어서 사용 구조체(struct) : 서로 다른 데이터 타입의 변수를 묶어 사용 포인터(pointer) : 메모리에 직접 접근하여 사용 배열(Array) : 같은 타입의 변수들로 이루어진 유한 집합 선언 형식에 따라 n차원 배열 구성 가능 int score[5]; //1차원 배열 int score[3][5]; //2차원 배열 int score[2][3][5] //3차원 배열 요소(element) : 배열을 구성하는 각각의 값 (=원소) 인덱스(index) : 배열에서의 위치를 가리키는 값 💡 배열의 인덱스는 0부터 시작하며..
2021.05.26
no image
[Java] 11. 모듈과 패키지
모듈 여러 패키지와 이미지 등의 자원을 모아 놓은 컨테이너 JDK 9부터 자바 API의 모든 클래스들(자바 실행 환경)을 패키지 기반에서 모듈들로 완전히 재구성함 응용프로그램 역시 여러 개의 모듈로 분할하여 작성 가능 클래스의 패키지화 → 패키지의 모듈화 자바 API를 여러 모듈로 분할하여 응용프로그램의 실행에 적합한 모듈들로만 실행 환경 구축 메모리 등의 자원이 열악한 작은 소형 기기에 꼭 필요한 모듈로만 구성하여 실행하기 위함 💡 모듈화는 복잡한 개념이므로 메모리 환경이 충분한 경우에는 굳이 모듈화를 하지 않아도 됨 모듈 파일에는 자바 API 의 패키지와 클래스들이 들어 있음 jmod 명령을 이용하여 모듈 파일에 들어 있는 패키지를 풀어 낼 수 있음 java.util.Scanner : 경로명으로 구성..
2021.05.26
no image
[Java] 10. 인터페이스
인터페이스(interface) : 호환성을 나타내는 정해진 규격 클래스가 구현해야 할 메소드들이 선언되는 추상형 interface 키워드로 선언 인터페이스의 목적 스펙을 주어 클래스들이 그 기능을 서로 다르게 구현할 수 있도록 하는 클래스의 규격 선언 클래스의 다형성을 실현하는 도구 인터페이스 구성 요소 상수public 만 허용 추상 메소드public abstract 생략 가능 default 메소드 public 만 허용 인터페이스에 코드가 작성된 메소드 인터페이스를 구현하는 클래스에 자동 상속 private 메소드 인터페이스에 코드가 작성된 메소드 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능 static 메소드 public, privat 모두 지정 가능, 생략 시 public 인터페이스의 특성..
2021.05.26
no image
[Java] 9. 추상 메소드와 추상 클래스
추상 메소드(abstract method) abstract 키워드를 사용해서 선언 선언되어 있으나 구현되어 있지 않은 메소드 형태만 있는 메소드! 서브 클래스에서 오버라이딩하여 구현해야함 추상 클래스(abstract class) abstract class Shape { public Shape() { } public void paint() { draw(); } abstract public void draw(); } abstract class MyComponent { String name; public void load(String name) { this.name = name; } } 추상 메소드를 하나라도 가진 클래스 추상 메소드가 하나도 없지만 abstract 로 선언된 클래스 🌟 추상 클래스는 객체를 ..
2021.05.16
no image
[Java] 8. 메소드 오버라이딩
메소드 오버라이딩(Method Overriding) 슈퍼 클래스의 메소드를 서브 클래스에서 재정의 슈퍼 클래스 메소드 명, 매개변수 타입 및 개수, 리턴 타입, 접근 지정자 등 모든 것을 동일하게 작성 (= 메소드 무시하기, 덮어쓰기) 서브 클래스에 오버라이딩된 메소드가 무조건 실행되는 것동적 바인딩 발생 └ 내/외부에서 메소드2()의 호출이 발생해도 무조건 서브 클래스의 메소드2()가 호출된다. └ draw() 메소드의 오버라이딩 사례 오버라이딩 조건 부모 클래스의 메소드와 메소드 명, 매개변수 타입 및 개수, 리턴 타입, 접근 지정자 등의 시그니처가 모두 동일해야 함 접근 제한을 더 좁게 수정 불가 _public_이나 _default_나 _private_로 수정 불가 추가적인 예외 (Exception..
2021.05.16
no image
[C 이론] 9. 함수와 변수
변수(variable) : 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간 변수의 속성 : 이름, 타입, 크기, 값 + 범위, 생존 시간, 연결 범위(scope) : 변수가 사용 가능한 범위_가시성 생존 시간(lifetime) : 메모리에 존재하는 시간 연결(linkage) : 다른 연역에 있는 변수와의 연결 상태 💡 변수는 사용하는 위치와 가까운 곳에서 선언하는 것이 좋다. 지역 변수(Local Variable) : 블록 안에 선언되는 변수 int sub(void) { int x = 0; while(flag != 0){ int y; ... } // 지역 변수 y가 사용가능한 범위 : 블록 내 y = 0; // Error) y가 선언된 블록을 벗어나서 사용 ... } // 지역 변수 ..
2021.05.13
no image
[Java] 7. 상속
상속 (inheritance) : 부모 클래스에 만들어진 필드, 메소드를 자식 클래스가 물려받음 상속을 통해 간결한 자식 클래스 작성 └ 동일한 특성 재정의 필요 ❌ → 자식 클래스의 간결 상속의 장점 클래스의 간결화: 멤버의 중복 작성 불필요 클래스의 관리 용이: 클래스들의 계층적 분류 소프트웨어의 생산성 향상: 재사용과 확장 용이 상속의 특징 클래스의 다중 상속 지원 ❌ (클래스를 여러 개 상속 불가) 상속 횟수는 무제한이다. 상속의 최상위 조상 클래스는 java.lang.Object 클래스이다. └ 컴파일러에 의해 자동으로 상속이 이루어진다. 상속 선언 public class Person { ... } public class Student extends Person { // Person 을 상속받는..
2021.05.08