티스토리 뷰
11. 객체지향프로그래밍(OOP : Object Oriented Programming)
★자바의 메모리구조
: OS에 의하여 프로그램이 수행되면 JVM은 OS로부터 적절한
크기의 메모리공간을 얻어내게 된다. 그리고 얻어낸 메모리
공간을 JVM은 3영역으로 나누어 관리한다
① 메소드(method area)영역 : 메소드의byte코드 ,클래스의 전역변수,static 멤버변수
② 스택(Stack) : 매개변수, 지역변수 (메소드의 실행이 종료되면 자동반환)
③ 힙(Heap) : 클래스객체, 배열객체, 문자열객체
(new연산자 사용, 객체가 사용하는 메모리공간)
-----------------------------------------------------------------------------------------------------
★객체지향의 중요한 3가지
(1) 캡슐화(Encapsulation)
:데이터보호, 재사용성 - 데이터은닉화
(2) 상속성(Inheritance)
:이미 만들어진 코드에 새로운 코드를 추가
(프로그램 개발속도 증진, 프로그램 전체의 오류를 방지)
(3) 다형성(Polymorphism)
:상속받은것을 그대로 사용하지 않고 사용자 입맛에 맞게 바꾸어 사용
package objectex;
/* -(private) , +(public) , #(protected) 접근지정자
클래스명 : Person
+name:String public String name;
+age:int
+score:float
+setPerson(na:String, a:int, s:float) : void
+viewPerson():void
*/
//ObjectEx1.java ----> ObjectEx1.class, Person.class
class Person{ // 필드/ 멤버함수
public String name;
public int age;
public float score;
public void setPerson(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}
public void viewPerson() {
System.out.println("이름" + name);
System.out.println("나이" + age);
System.out.println("점수" + score);
}
}
public class ObjectEx1 {
public static void main(String[] args) {
Person ob1 = new Person(); // new Person : 실제로 heap영역 메모리를 할당하는 instance
// instance 공간에는 필드만 잡히고 메서드 할당X
//메서드는 처리 스크립트일 뿐.
// instance의 데이터를 가져다가 메서드가 처리해주고 이 처리값이
// 객체 Object
ob1.setPerson("개나리", 22, 73.5f); //객체(Object) = field + method
ob1.viewPerson();
Person ob2 = new Person();
ob2.setPerson("민들레", 25, 93.5f);
ob2.viewPerson();
}
}
package objectex;
class User{
public String name;
public int a = 97;
public int b = 55;
public int c = 79;
public void setUser(String name, int a, int b, int c) {
this.name = name;
this.a = a;
this.b = b;
this.c = c;
}
public int getTotal() {
return a+b+c;
}
public String getUser() {
return "나의 이름은"+ name + "이고 총점은" + getTotal() + "점입니다";
}
}
public class ObjectEx2 {
//TODO 나의 이름은 강호동이고 총점은 231입니다.
public static void main(String[] args) {
User uu = new User();
uu.setUser("강호동", 97, 55, 79);
System.out.println(uu.getUser());
}
}
댓글