728x90

카테고리 206

리눅스 /etc/passwd , /etc/shadow 파일 정리

리눅스 /etc/passwd , /etc/shadow 파일 정리 사용자 계정은 사용자를 구별하기 위해 필요하다. 사용자 계정 관리가 중요하기 때문에 5가지 파일의 쓰임새를 알아야 한다. 1. /etc/passwd 파일 : 누구나 읽을 수 있도록 접근 권한을 설정해 놓은 파일이다. [로그인 ID : x : UID : GID : 설명 : 홈 디렉터리 : 로그인 셸] 순서대로 구성되어있고, :로 구분된다. x : 암호를 저장했었던 장소로, 이제는 /etc/shadow 파일에 대신 암호를 저장한다. UID : user ID라는 뜻으로 수정이 불가능하고 로그인 ID가 달라고 UID가 같으면 리눅스는 같은 사용자라고 판단한다. 일반 사용자의 UID는 1000번부터 순서대로 할당되는 특징이 있다. 0 : root 1..

JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운 캐스팅

JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운 캐스팅 다형성 다양한 형태가 존재한다는 의미이다. 다형성을 이용해 프로그래밍을 유연하게 만들 수 있다. 객체의 종류에 따라 달라지는 코드 사용을 프로그래밍 시 구분하지 않고 사용할 수 있도록 해준다. 따라서 프로그래밍이 단순해진다. 참조 변수에 객체를 할당해주는 기본적인 방법은 참조 변수의 자료형과 할당하고자 하는 객체의 자료형이 일치하는 것이다. Upcasting 업 캐스팅 super 클래스형 참조 변수로 sub 클래스 객체를 가리키는 데 사용이 가능하다. Person p = new UnivStudent(); Person p = (Person) (new UnivStudent()); sub 클래스 객체의 ..

JAVA Method Overriding 자바 메서드 오버 라이딩

JAVA Method Overriding 자바 메서드 오버 라이딩 메서드 오버 라이딩 super 클래스에서 상속받은 멤버를 sub 클래스에서 다시 정의하는 것이다. 기존의 멤버를 요구사항에 맞게 수정하는 효과를 가진다. super 클래스에서와 동일한 형태로 정의한다. super 클래스에서 상속된 멤버는 은폐되어 sub 클래스 객체의 메서드에서 은폐된 멤버에 접근하기 위해서는 super 참조 변수를 사용해야 한다. 오버 라이딩과 오버 로딩을 헷갈리지 말자. 구분 오버라이딩(재정의) 오버로딩(다중정의) 접근제한 부모의 멤버 함수보다 자식 멤버 함수의 접근제한이 비슷하거나 더 넓어야 한다. 상관없다. 반환형 같아야 한다. 상관없다. 메서드명 같아야 한다. 같아야 한다. 인자 (타입 / 개수) 같아야 한다. 반..

JAVA 클래스 상속

JAVA 클래스 상속 클래스 상속 관계 자바 프로그래밍에서 클래스를 상속하게 된 배경은 비슷한 동작을 하는 서로 다른 객체들을 위해 포괄적인 속성과 행위를 갖도록 구현하기 위해서이다. 비슷한 내용의 클래스가 반복되면 비효율적이기 때문에 상속을 통해 비슷한 행위에 대해 서로 다른 인터페이스를 가질 수 있다. 상속관계는 특정 클래스가 가지는 일부 속성과 행위를 다른 클래스에게 제공하기 위해 맺는 관계이다. 기존 클래스의 멤버를 그대로 이용하면서 새로운 멤버를 추가할 수 있고, 기존 클래스의 멤버를 수정하여 사용하는 것도 가능하다. 상속의 이점 코드를 재사용하여 유지보수가 용의 하고 비슷한 코드를 다시 사용할 수 있다. 그리고 연관된 일련의 클래스에 대한 규약을 정의해 비슷한 유형을 묶어 클래스 객체 간의 동..

Do it! 자바 프로그래밍 입문 6장

Do it! 자바 프로그래밍 입문 6장 1. 클래스 내부에서 자신의 주소를 가리키는 예약어를 this라고 합니다. 2. 클래스에 여러 생성자가 오버 로드되어 있을 경우에 하나의 생성자에서 다른 생성자를 호출할 때 this를 사용합니다. 3. 클래스 내부에 선언하는 static 변수는 생성되는 인스턴스마다 만들어지는 것이 아닌 여러 인스턴스가 공유하는 변수입니다. 따라서 클래스에 기반한 유일한 변수라는 의미로 클래스 변수라고도 합니다. 4. 지역 변수는 함수나 메서드 내부에서만 사용할 수 있고 스택 메모리에 생성됩니다. 멤버 변수중 static 예약어를 사용하는 static 데이터 영역 메모리에 생성됩니다. 5. 아침 출근길에 김 씨는 4,000원을 내고 별다방에서 아메리카노를 사 마셨습니다. 이 씨는 콩..

[ C++ ] 레퍼런스 Reference 캡슐화 Encapsulation 정보은닉 Private

[ C++ ] 레퍼런스 Reference 캡슐화 Encapsulation 정보은닉 Private 레퍼런스 Reference 레퍼런스를 잘 이용해야 한다.. 레퍼런스는 객체를 줄 때 지역변수와 차이가 없어 보인다.. 레퍼런스 객체의 상호작용을 중시하자. 클래스 밖에 선언된 상수는. h에서 정의한다. inline 함수는. h에서 정의한다 상수 정의 앞에 const를 추가해,. h에 저장한다 상수를 선언만 가능하고 값 할당은 불가능 레퍼런스를 이용해 객체를 받고 참조한다. 멤버 함수에 있는 멤버 변수는 그 객체에 적용이 된다.. 멤버 함수는 을. 멤버 변수 직접 접근 X 생성자, 초기화 함수 만들 때 오른쪽 부분이 아닌 왼쪽 부분의 인수에 디폴트 값을 지정하자 매개변수는 오른쪽부터 참조된다. void Init..

C++ Programming 2021.11.08

[ C++ ] Class 클래스 정의와 객체 선언

[ C++ ] Class 클래스 정의와 객체 선언 class 정의 C++에서는 클래스 정의도 하나의 선언문이기 때문에 반드시 세미콜론;으로 끝나야 한다.. C++의 멤버 필드(속성), 멤버 함수(행위)의 기본 접근 지정자는 private이다. JAVA의 기본 접근 지정자는 public이다. 객체 외부에서 멤버 함수를 호출할 수 있도록 대부분의 멤버 함수는 public이다. C++에서는 일반적으로 클래스 정의 안에 멤버 함수의 프로토타입만 선언하고 함수에 대한 것은 다른 cpp에 저장한다. 멤버 필드는 일반적으로 private에 지정해 캡슐화가 되도록 한다. instance 멤버 필드 (기본적) 각 객체 생성 시 별도의 메모리 할당 static 멤버 필드 (전역) instance 멤버 함수 static 멤..

C++ Programming 2021.11.07

[ C++ ] 반환 자료형의 세가지 형태, 매개변수의 세가지 형태

[ C++ ] 반환 자료형의 세 가지 형태, 매개변수의 세 가지 형태 [매개변수의 세 형태] 값에 의한 전달 > 인수에 영향을 주지 못함 주소에 의한 전달 (포인터) 레퍼런스에 의한 전달 (레퍼런스) 한계 : 함수 호출 문을 보고 값에 의한 전달인지 레퍼런스에 의한 전달인지 모른다. const 레퍼런스를 사용하면 실 인수 변경이 불가능하다. 매개변수를 통한 변경을 방지할 때 사용할 수 있다. [반환 자료형의 세 형태] 1. 값에 의한 반환 (복사 반환) main() int x; int y; y = increment(x); int increment(int n){ n = n + 1; return n;} 2-1. 주소(*)에 의한 반환 (포인터 매개변수, 주소 값 반환) main() int x; int* y;..

C++ Programming 2021.11.06

[ C++ ] 네임스페이스 :: namespace 포인터 Pointer

[ C++ ] 네임스페이스 :: namespace 포인터 Pointer 네임스페이스 네임스페이스는 특정 공간에 이름을 붙여 주기 위한 문법 요소이다.. ::을 사용하고 이름 공간 중첩 가능하다. 문자열을 매개변수에 전달하려고 할 때 const char* str을 사용한다. const 레퍼런스 const 레퍼런스는 상수 기능을 한다. 포인터로 값을 수정하려고 해도 수정 불가능하다. 문자열은 기본적으로 포인터를 사용해 간접 참조 활용한다. 모자란 인수 대신 매개변수의 기본값이 사용된다. 기본값 설정은 함수 선언 부분(맨 앞)에(맨앞) 명시한다. void function(int n = 0); 따라서 매개변수의 기본값은 오른쪽에 치우쳐 기술되어야 함. JAVA에서는 매개변수의 기본값을 설정할 수 없다. C의 메..

C++ Programming 2021.11.05

[ C++ ] 객체지향 프로그래밍 C++

[ C++ ] 객체지향 프로그래밍 C++ C++은 C보다 더 엄격한 type-checking을 수행한다. 최대한 상호작용하여 객체지향적으로 프로그래밍하자. 객체 : 연관된 정보들의 묶음. 데이터와 알고리즘을 하나에 넣는 것이다. 이 문제를 풀기 위해서 어떤 객체가 필요한가 가 중요하다. 실생활과 밀접하다. 문제를 크게 보아 상향식 설계로 작은 단위의 필요한 객체들을 만들고 더 큰 단위의 객체를 생성한다. 즉, 낮은 수준의 객체를 이용하여 더 높은 수준의 객체를 작성하는 것이다. 객체지향적으로 객체를 이용하면 외부의 작업에 의해서가 아니라 내부적으로 밥을 지을 수 있어야 한다.. 객체와 객체가 서로 상호작용한다. 많은 함수 호출 메커니즘이 필요하다. 개념 정의 네임스페이스 (JAVA 패키지) : 식별자가 ..

C++ Programming 2021.11.04
728x90