본문 바로가기

▶Programming/Theory

메모리 할당 런타임 vs 컴파일 타임 런타임: scanf를 통해 값을 입력받고 그걸 출력하는 것처럼 실시간으로 값을 수정 할 수 있는 프로그램이 작동하는 시간. 컴파일 타임: .exe파일로 만들어지는 시간. 실시간으로 값을 수정 할 수 없다. 한번 컴파일 되면 값 바꿀 수 없음. 더보기
static 과 non static 1. static이 붙은 변수나 메소드를 인스턴스 생성없이 사용가능 이유는? 답)인스턴스의 모태가 되는 클래스가 메모리에 올라갈 때 클래스의 멤버로 메모리에 같이 올라가 있기 때문에 2. static이 붙은 메소드에서 인스턴스 변수를 사용 할 수 없는 이유는? 답)static 사용 시점에 인스턴스가 생성되어 있는지 안 되어 있는지 알 수 없기때문에 3. static 사용 이유는? 답)값의 중복을 피할 수 있게 해주고 한 장소에 값을 적재하기 때문에 값을 찾는 시간이 줄어든다. 이는 프로그램의 효율성을 높여준다. 4. static 고려사항 ①클래스 멤버 변수 중 인스턴스화 시켰을 때 공통으로 유지할 값이 있으면 static 사용을 고려한다.②클래스에서 만든 메소드 중 인스턴스 변수 사용이 없는 메소드는 s.. 더보기
임베디드 임베디드는 안에 집어 넣고 보여준다(실행한다) 라고 생각하면 된다. 즉 누가 임베디드가 뭐냐라고 물어보면 '어느 장치(기계)에 무언가를 집어넣고 실행하는 것' 이라고 말하면 된다. 더보기
overriding vs overloading overloading은 함수 중복으로 정의-함수 이름만 같으면 나머지 다 달라도 오케이! overriding은 상속받은 메소드 재정의-부모와 내용만 살짝 다르게. overriding 1. 오버라이드 하고자 하는 메소드가 상위 클래스에 존재해야 함.2. 메소드 이름이 같아야 함.3. 메소드 파라미터의 개수,타입(자료형태), 리턴타입이 같아야 함.4. 메소드에 상위 메소드와 동일하거나 내용이 추가되어야 한다. ->즉, 부모한테 받은거 그대로 쓰거나 몇줄 추가 해서 약간 바꿔쓰거나! 이게 오버라이딩! 여기까지는 쉬운데.. 이제 overloading이 들어가면 이때부터 헷갈리기 시작. overloading은 다형성의 개념. 다형성이 뭔가하니..잡탕과 비슷. 이놈이고 저놈이고 다 들어갈 수 있게 만드는 것. 쉽게.. 더보기
객체, 클래스, 인스턴스 두번이나 쓰는 내용...그만큼 OOP(객체지향 프로그래밍)에선 중요한 내용..처음이자 끝.. 클래스: 예전에도 써놨지만 설계도.. 인스턴스: 실제 제품.. 설계도인 클래스가 실체를 가진 인스턴스가 되었을 때 그것을 '객체'라 부름. 아..그래서 누군가는 객체=인스턴스 라고 하는거였군.. 근데 위와 같이 이해하려니까 도저히 안 와 닿음..제품..제품..다 똑같은 외형을 가진 제품...공장에서 찍어내는 제품을 떠올리니 독립적인걸 추구하는 객체지향의 내용을 이해하기 쉽지 않음. 그래서 사람에 비유하기로 결정! 이건 나만의 개인적인 생각. 아기(클래스가 왜 아기냐? 아기는 어릴때는 구분이 안간다. 다 똑같이 생김)한테 먹는법, 옷 입는 법, 신발 끈 매는 법 등 여러가지를 가르침(객체화). 이런식으로 '부모가 .. 더보기
public private protected public은 전체공개-누구나 레퍼런스(참조)를 가능하게 해줌. 모든 패키지에서(굳이 같은 패키지 아니어도 사용 가능!) private은 비공개(private를 선언한 클래스 내부에서만 사용 가능) protected는 가족공개(protected를 선언한 클래스와 상속 받은 클래스에서 사용 가능) 위 그림은 public, private, protected를 보여주는 화면이다. class를 만들었는데 이름이 Hellow이다. 이걸 메인에서 인스턴스화 시켜서 인스턴스로 만들었다. 그리고 인스턴스의 메소드를 사용하기 위해메소드를 보는 순간 쓸 수 있는건 public과 protected관련 메소드였다. private는 private를 선언한 class에서 밖에사용 할 수 없으므로 쓸 수 없다. 내가 착각한게 pu.. 더보기
recursive 리커시브 완벽히 이해하기 C언으로 하는 자료구조를 하다보면 리커시브가 상당히 많이 나온다. 그런데 기본적으로 아주쉽고, 직관적으로 알 수 있는 리커시브가 아니라, 상당히 난해하고 머리로 쉽게 이해하지 못하는 리커시브가 많이 등장한다. 그래서 이번에 상당히 복잡한 리커시브를 확실히 이해하고자 한다. 쓰인 코드는 깊이 우선 탐색으로, 갈 수 있는 경로를 구하는 코드이다. 어쨋든 사용되는 리커시브를 통해 리커시브를 완벽히 이해하자.노드의 모양은 이러하다. 만약 내가 0번 노드에서 시작을 한다면 0에서 갈 수 있는 노드는 3번과 4번노드가 있다. 둘중에 숫자가 작은 노드를 선택한다. 그러면 3이 선택될 것이고 3번 노드는 또 다시 갈 수 있는 길을 탐색 할 것이다. 이때 0번은 지나온 길이므로 갈 수 없음을 표시하고, 나머지 노드중 가.. 더보기
length 에 대하여... length를 길이라고 생각하기보다 배열 원소의 개수로 보는 편이 더 편함.아직 나에겐 길이보다 배열 원소의 개수가 더 익숙하고 편하다.. 더보기
클래스, 객체, 인스턴스 개념..(by 주인장) 내 마음대로 정리한 클래스, 객체, 인스턴스 개념...틀려도 어쩔 수 없음...ㅠ.ㅠ 클래스=제품 설계도. 객체(object)=제품. 제품은 제품인데 정말 순수하게 클래스라는 설계도를 바탕으로 만들어 진 것. (프로그램 설계측면)다른분이 객체에 대해 정리한걸 보니 "무언가를 프로그램상에서 표현했다는 것을 강조 할때 객체라는 용어를 사용" 이라고 정의하심. 인스턴스(instance)=실제 제품=클래스+ 다른 클래스+여타참조들 = 진짜 사용될 수 있게 만들어진 것. (by me)c기준으로 표현을 하자면 .obj + obj + 라이브러리 =exe파일 이때 exe파일을 인스턴스라고 생각하면 쉬울듯.다른분께선 "실제로 무언가를 표현하는 클래스를 정의하고 이 클래스를 이용해 실제화 시켰을때(프로그램 작성측면)" 라.. 더보기
SystemSoftware 관련.. 정해진 규칙에 따라 데이터를 처리하여 결과를 산출하는 것= 연산 operation 연산에 사용되는 표시나 기호= 연산자 operator 연산자가 처리하는 데이터 = 피연산자 = operand 연산자, 피연산자를 이용하여 계산 하는 기술 = 식 expression 더보기