m.kelas-karyawan-ftumj.prestasi.web.id Layanan Informasi 17 Jam
Telp/Fax : 021-8762002, 8762003, 8762004, 87912360
HP/SMS : 081 1110 4824 27, 0812 9526 2009, 08523 1234 000
WhatsApp : 0817 0816 486, 0812 9526 2009
email : _Hubungi Kami__ silahkan klik
Chatting dengan Staf :
ggkarir.com
ggiklan.com
Pilih Bahasa :   ID   EN   Permintaan Katalog / Brosur (GRATIS via POS)   Kelas Karyawan   Reguler
D3 Analis Farmasi dan Makanan (Anafarma)Kedutaan KBRIKab/Kota, Desa, Kec.CPNSNegara seluruh DuniaReferensi ICTS2JavaScriptPerangkat Lunak (Software)

   
Cari  
    Teknik Informatika

    Sebelumnya  (Subtractor) (Subversion (software))  Berikutnya    

Subtyping

In programming language theory, subtyping (also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which a subtype is a datatype that is related to another datatype (the supertype) by some notion of substitutability, meaning that program elements, typically subroutines or functions, written to operate on elements of the supertype can also operate on elements of the subtype. If S is a subtype of T, the subtyping relation is often written S <: T, to mean that any term of type S can be safely used in a context where a term of type T is expected. The precise semantics of subtyping crucially depends on the particulars of what "safely used in a context where" means in a given programming language. The type system of a programming language essentially defines its own subtyping relation, which may well be trivial.

Because the subtyping relation allows a term to have (belong to) more than one type, subtyping is a form of type polymorphism, so it is (properly) called subtype polymorphism. In object-oriented programming subtyping is commonly called just polymorphism (see polymorphism in object-oriented programming). Subtyping is practically never called this way in type theory or in functional programming, where the unqualified use of "polymorphism" usually refers to parametric polymorphism, as in polymorphic lambda calculus. (Mechanisms similar in purpose, but not identical with parametric polymorphism are known by other names in object-oriented programming, e.g. generics in Java or templates in C++.)

Functional programming languages often allow the subtyping of records. Consequently, simply typed lambda calculus extended with record types is perhaps the simplest theoretical setting in which a useful notion of subtyping may be defined and studied. Because the resulting calculus allows terms to have more than one type, it is no longer a "simple" type theory. Since functional programming languages, by definition, support function literals, which can also be stored in records, records types with subtyping provide some of the features of object-oriented programming. (Unless references are added to the language, record "objects" are immutable). Typically, functional programming languages also provide some, usually restricted, form of parametric polymorphism. In a theoretical setting, it is desirable to study the interaction of the two features; a common theoretical setting is system F<:. Various calculi that attempt to capture the theoretical properties of object-oriented programming may be derived from system F<:.

The concept of subtyping is related to the linguistic notions of hypernymy and holonymy. It is also related to the concept of bounded quantification in mathematical logic. Subtyping should not be confused with the notion of (class or object) inheritance from object-oriented languages; subtyping is a relation between types (interfaces in object-oriented parlance) whereas inheritance is a relation between implementations stemming from a language feature that allows new objects to be created from existing ones. In a number of object-oriented languages, subtyping is called interface inheritance.

Contents

Origins

The notion of subtyping in programming languages dates back to the 1960s; it was introduced in Simula derivatives. The first formal treatments of subtyping were given by John C. Reynolds in 1980 who used category theory to formalize implicit conversions, and Luca Cardelli (1985).[1]

The concept of subtyping has gained visibility (and synonymy with polymorphism in some circles) with the mainstream adoption of object-oriented programming. In this context, the principle of safe substitution is often called the Liskov substitution principle, after Barbara Liskov who popularized it in a keynote address at a conference on object-oriented programming in 1987. Because it must consider mutable objects, the ideal notion of subtyping defined by Liskov and Jeannette Wing, called behavioral subtyping is considerably stronger than what can be implemented in a type checker. (see the section on function types for details)

Examples

Example of Subtypes: where bird is the supertype and all others are subtypes as denoted by the arrow in UML notation.

A simple practical example of subtypes is shown in the diagram, right. The type "bird" has three subtypes "duck", "cuckoo" and "ostrich". Conceptually, each of these is a variety of the basic "bird" that inherits many "bird" characteristics but has some specific differences. The UML notation is used in this diagram, with open-headed arrows showing the direction and type of the relationship between the supertype and its subtypes.

As a more practical example, a language might allow floating point values to be used wherever integer values are expected (Float <: Integer), or it might define a generic type Number as a common supertype of integers and the reals. In this second case, we only have Integer <: Number and Float <: Number, but Integer and Float are not subtypes of each other.

Programmers may take advantage of subtyping to write code in a more abstract manner than would be possible without it. Consider the following example:

function max (x as Number, y as Number) is  if x < y then    return y  else    return xend

If integer and real are both subtypes of Number, and an operator of comparison with an arbitrary Number is defined for both types, then values of either type can be passed to this function. However, the very possibility of implementing such an operator highly constrains the Number type (for example, one can't compare an integer with a complex number), and actually only comparing integers with integers and reals with reals makes sense. Rewriting this function so that it would only accept 'x' and 'y' of the same type requires bounded polymorphism.

Subtyping in type theory is characterized by the fact that any expression of type A may also be given type B if A<:B; the formal typing rule that codifies this is known as the subsumption rule.

Subtyping schemes

Type theorists make a distinction between nominal subtyping, in which only types declared in a certain way may be subtypes of each other, and structural subtyping, in which the structure of two types determines whether or not one is a subtype of the other. The class-based object-oriented subtyping described above is nominal; a structural subtyping rule for an object-oriented language might say that if objects of type A can handle all of the messages that objects of type B can handle (that is, if they define all the same methods), then A is a subtype of B regardless of whether either inherits from the other. Sound structural subtyping rules for types other than object types are also well known[citation needed].

Implementations of programming languages with subtyping fall into two general classes: inclusive implementations, in which the representation of any value of type A also represents the same value at type B if A<:B, and coercive implementations, in which a value of type A can be automatically converted into one of type B. The subtyping induced by subclassing in an object-oriented language is usually inclusive; subtyping relations that relate integers and floating-point numbers, which are represented differently, are usually coercive.

In almost all type systems that define a subtyping relation, it is reflexive (meaning A<:A for any type A) and transitive (meaning that if A<:B and B<:C then A<:C). This makes it a preorder on types.

Record types

Types of records give rise to the concepts of width and depth subtyping. These express two different ways of obtaining a new type of record that allows the same operations as the original record type.

Recall that a record is a collection of (named) fields. Since a subtype is a type which allows all operations allowed on the original type, a record subtype should support the same operations on the fields as the original type supported.

One kind of way to achieve such support, called width subtyping, adds more fields to the record. More formally, every (named) field appearing in the width supertype will appear in the width subtype. Thus, any operation feasible on the supertype will be supported by the subtype.

The second method, called depth subtyping, replaces the various fields with their subtypes. That is, the fields of the subtype are subtypes of the fields of the supertype. Since any operation supported for a field in the supertype is supported for its subtype, any operation feasible on the record supertype is supported by the record subtype. Depth subtyping only makes sense for immutable records: for example, you can assign 1.5 to the 'x' field of a real point (a record with two real fields), but you can't do the same to the 'x' field of an integer point (which, however, is a deep subtype of the real point type) because 1.5 is not an integer.

Subtyping of records can be defined in System F<:, which combines parametric polymorphism with subtyping of record types and is a theoretical basis for many functional programming languages that support both features.

Some systems also support subtyping of labeled disjoint union types (such as algebraic data types). The rule for width subtyping is reversed: every tag appearing in the width subtype must appear in the width supertype.

Function types

If T1 → T2 is a function type then a subtype of it is any function S1 → S2 with the property that T1 <: S1 and S2 <: T2. The argument type of S1 → S2 is said to be contravariant because the subtyping relation is reversed for it, whereas the return type is covariant. (Informally, this reversal occurs because the refined type is "more liberal" in the types it accepts and "more conservative" in the type it returns.)

In languages that allow side effects, like most object-oriented languages, subtyping is generally not sufficient to guarantee that a function can be safely used in the context of another. Liskov's work in this area focused on behavioral subtyping, which besides the type system safety discussed in this article also requires that subtypes preserve all invariants guaranteed by the supertypes in some contract.[2] This definition of subtyping is generally undecidable, so it cannot be verified by a type checker.

The subtyping of mutable references is similar to the treatment of function arguments and return values. Write-only references (or sinks) are contravariant, like function arguments; read-only references (or sources) are covariant, like return values. Mutable references which act as both sources and sinks are invariant.

Object types

Coercions

In coercive subtyping systems, subtypes are defined by implicit type conversion functions from subtype to supertype. For each subtyping relationship (S <: T), a coercion function coerce: ST is provided, and any object s of type S is regarded as the object coerceST(s) of type T. A coercion function may be defined by composition: if S <: T and T <: U then s may be regarded as an object of type u under the compound coercion (coerceTUcoerceST). The type coercion from a type to itself coerceTT is the identity function idT

Coercion functions for records and disjoint union subtypes may be defined componentwise; in the case of width-extended records, type coercion simply discards any components which are not defined in the supertype. The type coercion for function types may be given by f'(s) = coerceS2T2(f(coerceT1S1(t))), reflecting the contravariance of function arguments and covariance of return values.

The coercion function is uniquely determined given the subtype and supertype. Thus, when multiple subtyping relationships are defined, one must be careful to guarantee that all type coercions are coherent. For instance, if an integer such as 2 : int can be coerced to a floating point number (say, 2.0 : float), then it is not admissible to coerce 2.1 : float to 2 : int, because the compound coercion coercefloatfloat given by coerceintfloatcoercefloatint would then be distinct from the identity coercion idfloat.

Intersection and union types

Union types should not to be confused with sum types, the anonymous version of which are called a "unions" in many imperative programming languages.

See also

Notes

  1. ^ Pierce, ch. 15 notes
  2. ^ Barbara Liskov, Jeannette Wing, A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 16, Issue 6 (November 1994), pp. 1811 - 1841. An updated version appeared as CMU technical report: Liskov, Barbara; Wing, Jeannette (July 1999). "Behavioral Subtyping Using Invariants and Constraints" (PS). http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-156.ps. Retrieved 2006-10-05.

References

Textbooks

  • Benjamin C. Pierce, Types and programming languages, MIT Press, 2002, ISBN 0-262-16209-1, chapter 15 (subtyping of record types), 19.3 (nominal vs. structural types and subtyping), and 23.2 (varieties of polymorphism)
  • C. Szyperski, D. Gruntz, S. Murer, Component software: beyond object-oriented programming, 2nd ed., Pearson Education, 2002, ISBN 0-201-74572-0, pp. 93–95 (a high-level presentation aimed at programming language users)

Papers

  • Reynolds, John C. Using category theory to design implicit conversions and generic operators. In N. D. Jones, editor, Proceedings of the Aarhus Workshop on Semantics-Directed Compiler Generation, number 94 in Lecture Notes in Computer Science. Springer-Verlag, January 1980. Also in Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design (MIT Press, 1994).
  • Cardelli, Luca. A semantics of multiple inheritance. In G. Kahn, D. MacQueen, and G. Plotkin, editors, Semantics of Data Types, volume 173 of Lecture Notes in Computer Science, pages 51–67. Springer-Verlag, 1984. Full version in Information and Computation, 76(2/3):138–164, 1988.

Further reading

  • John C. Reynolds, Theories of programming languages, Cambridge University Press, 1998, ISBN 0-521-59414-6, chapter 16.
  • Martín Abadi, Luca Cardelli, A theory of objects, Springer, 1996, ISBN 0-387-94775-2. Section 8.6 contrast the subtyping of records and objects.
    Sebelumnya  (Subtractor) (Subversion (software))  Berikutnya    





Tags: Subtyping, Teknik Informatika, 2243, Subtyping Theories and practice of polymorphism Double dispatch Multiple dispatch Operator overloading Polymorphism in computer science Polymorphism in OOP Subtyping Virtual function Single, amp; dynamic dispatch Parametric polymorphism In programming language theory subtyping (also subtype polymorphism or inclusion polymorphism ) is a form of type polymorphism in which a subtype is a datatype th, Subtyping, Bahasa Indonesia, Contoh Instruksi, Tutorial, Referensi, Buku, Petunjuk, Panjunan sukodono sidoarjo, Br, Ebenezer odunlami, Bs, Danijel aleksic, Bsdmart, Universitas pgri yogyakarta, Jack kelsey, Bt m.kelas karyawan ftumj, prestasi.web.id
 Lowongan Karir    Permintaan Beasiswa Kuliah    Program Perkuliahan Reguler    Macam2 Perdebatan    Program Magister (Pascasarjana, S2)    Kumpulan Artikel Bebas    Download Brosur
Informasi PTS
Khusus Perguruan Tinggi Swasta
Terkemuka & Terakreditasi
STMIKMJ Jakarta
STIE IGI
STTM STIE WP
STEI Jogja
STIE Hidayatullah
STEBI Bina Essa
UMJ: FTan FISIP
Univ. Muhammadiyah Smrg
Univ. Muhammadiyah Sby
UNSUB
STMIK MJ UNKRIS
Univ. Thamrin: FE FASILKOM
ISTA ITBU
STIE Trianandra STIE IGI
STT Mandala Bandung
STMIK STIKOM Bali STTB
POLNAS Denpasar
STT Bina Tunggal Bks.
STIKI Malang
UNDARIS Semarang
INDOCAKTI
UPRI
STIE Hidayatullah Depok
UNISA Dharma Andigha
Universitas Nusantara
UHAMZAH
UTS Makassar
STT Duta Bangsa
STIE GICI IMWI Sukabumi
UNAKI KAHURIPAN
STEI Jogja STIE Pemuda
Universitas Mpu Tantular
USCND Langsa
USM INDONESIA STTM
UNUGHA UM Palangkaraya
STIE WD IKIP WD
STIE Ganesha Yuppentek
STT Muttaqien
STIT BATAM IAI AS
UCM STIE GEMA
Universitas Megou
STIE PIONEER
STIMAIMMI STIEABI
UPGRIS UICM Bandung
AL-AZHAR UNUSA
Tanri Abeng University
STIE AMKOP STIE WP
Univ. Boyolali UDB
UNIBA ITB AD
UNU KALBAR
Ubudiyah
ISIF
STEBI Global Mulia
STT Sapta Taruna
Universitas Bali Dwipa
UNU Kaltim UHS
Univetsitas IVET
CENDEKIA STAI DB
STIE Mitra STiPSi
UNIPI Bandung
STIE Al-Rifa'ie
UNTARA Pelita Bangsa
Patria Artha
Univ. Widya Kartika
UTN Bogor IGN Bogor
Parna Raya
STAI Terpadu Yogyakarta
STIT Al-Hikmah Lampung
Univ. Deli Sumatera
STIA Bayuangga
UI Mandiri
STAI Muhammadiyah Probolinggo
STEBI Bina Essa
STAI Muhammadiyah Tulungagung
Politeknik Harapan Bangsa Surakarta
STIKes Sapta Bakti
ITeKes Tri Tunas Nasional
STEBI Badri Mashduqi
STIA Maulana Yusuf
STAI Miftahul Ulum
STIH Gunung Jati
STIE PPI Balaraja
Poltekkes Kerta Cendekia
ITB Pelita Raya
Poltek Ganesha
Universitas Moch. Sroedji
STIT Al-Hidayah Tasikmalaya
STIT Nur Ahadiyah
Politeknik Aisyiyah
Politeknik Santo Paulus Surakarta
IAI Al-Ghurabaa Jakarta
STAI AL Akbar Surabaya
Universitas Mahakarya Asia Yogyakarta
Politeknik Bhakti Kartini
Univ. Muhammadiyah Smrg
STMIK MJ UNKRIS
Thamrin: FE FASILKOM
STT Bina Tunggal Bks.
STIKI Malang
UNDARIS Semarang
INDOCAKTI
UPRI
STIE Hidayatullah Depok
UNISA Dharma Andigha
Universitas Nusantara
UHAMZAH
UTS Makassar
STT Duta Bangsa
STIE GICI IMWI Sukabumi
UNAKI KAHURIPAN
STEI Jogja STIE Pemuda
Universitas Mpu Tantular
USCND Langsa
USM INDONESIA
UM Palangkaraya
UNUGHA STIE WD IKIP WD
STIE Ganesha Yuppentek
STT Muttaqien
STIT BATAM IAI AS
UCM STIE GEMA
Universitas Megou
STIE PIONEER
STIMAIMMI STIEABI
UPGRIS UICM Bandung
AL-AZHAR UNUSA
Tanri Abeng University
STIE AMKOP STIE WP
Univ. Boyolali UDB
UNIBA ITB AD
UNU KALBAR
Ubudiyah ISIF
STEBI Global Mulia
STT Sapta Taruna
Universitas Bali Dwipa
UNU Kaltim UHS
Univetsitas IVET
CENDEKIA STAI DB
STIE Mitra STiPSi
UNIPI Bandung
STIE Al-Rifa'ie
UNTARA Pelita Bangsa
Patria Artha
Univ. Widya Kartika
UTN Bogor IGN Bogor
Parna Raya
STAI Terpadu Yogyakarta
STIT Al-Hikmah Lampung
Univ. Deli Sumatera
STIA Bayuangga
UI Mandiri
STAI Muhammadiyah Probolinggo
STEBI Bina Essa
STAI Muhammadiyah Tulungagung
Politeknik Harapan Bangsa Surakarta
STIKes Sapta Bakti
ITeKes Tri Tunas Nasional
STEBI Badri Mashduqi
STIA Maulana Yusuf
STAI Miftahul Ulum
STIH Gunung Jati
STIE PPI Balaraja
Poltekkes Kerta Cendekia
ITB Pelita Raya
Poltek Ganesha
Universitas Moch. Sroedji
STIT Al-Hidayah Tasikmalaya
STIT Nur Ahadiyah
Politeknik Aisyiyah
Politeknik Santo Paulus Surakarta
IAI Al-Ghurabaa Jakarta
STAI AL Akbar Surabaya
Universitas Mahakarya Asia Yogyakarta
Politeknik Bhakti Kartini
MM UNKRIS MIKom Fisip UMJ MIA Fisip UMJ
MM STIE Mitra MM UNTARA MM Pelita Bangsa
MM STIE Ganesha
MM STIMAIMMI MM STIEABI
MM STIE IGI MM STIE GICI MKS ITB Ahmad Dahlan
MM IGN MKom IGN
KPT Konsultan Pendidikan Tinggi
Chatting dengan staf
Kuliah Karyawan

(silakan klik di bawah ini)
Penerimaan / Pendaftaran
__Mahasiswa Baru

Lokasi Kampus & Peta
Program Studi (D3, S1, S2)
___(+ Kurikulum & Prospektus)

Pascasarjana (S2)
Biaya Pendidikan
Sistem Pendidikan
Jadwal Kuliah & Dosen
Keunggulan-Keunggulan
Angkutan Umum


GALERI FOTO



 Perkuliahan Hybrid di 112 PTS Terbaik    Platform Try Out Online    Pendaftaran Online    Semua Informasi    Soal-Jawab Psikotes    Buku Referensi    Jadwal Sholat    Alquran Online    Kuliah Shift    Program Kelas Entrepreneur    Program Kuliah Tanpa Biaya
Link Khusus ke
PTS Terakreditasi & Terkemuka
Penyelenggara Program S1, D3, S2

(silakan klik di bawah ini)
STMIKMJ - STMIKMJ Jakarta
IGI - STIE IGI Jakarta
STTM Cileungsi - STIE Cileungsi
STIE WP - STIE Widya Persada
UPRI - UPRI Makassar
STEI - STEI Yogyakarta
STIE - Hidayatullah Depok
STEBI - Bina Essa
P2KKMPoliteknik Aisyiyah

P2KKMUMPTB Lampung
P2KKMSTIT Al-Hikmah Lampung

P2KKMUniv.Amir Hamzah
P2KKMUSM Indonesia
P2KKMUniv. Al-Azhar Medan
P2KKMUniversitas Deli Sumatera

P2KKMUniv. Muh. Palangkaraya

P2KKMSTIT Nur Ahadiyah

P2KKMUniv. Nahd. Ulama Kalbar

P2KKMUniv. Nahd. Ulama Kaltim

Langsa -- Aceh :
P2KKMUSCND Langsa

P2KKMUniv. Ubudiyah Indonesia

P2KKMSTIT Hidayatullah
P2KKMIAI Abdullah Said

P2KKMUniv. Pejuang Rep. Ind.
P2KKMUniv. Teknologi Sulawesi
P2KKMUniv. Cokroaminoto Makassar
P2KKMITeKes Tri Tunas Nasional

P2KKMUniv. Patria Artha

P2KKMUniv. Nusantara, Manado
P2KKMSTIE Pioneer Manado
P2KKMUniversitas Parna Raya Manado

P2KKMUniversitas Boyolali

P2KKMUniversitas Duta Bangsa
P2KKMPoliteknik Harapan Bangsa Surakarta
P2KKMPoliteknik Santo Paulus Surakarta

P2KKMUNIBABWI

P2KKMUniv. Muhammadiyah Smrg
P2KKMUNDARIS Semarang
P2KKMUNAKI Semarang
P2KKMUPGRIS Semarang
P2KKMUniv. IVET Semarang
P2KKMSTIE Cendekia

P2KKMUNUGHA Cilacap

P2KKMUniv. Muhammadiyah Sby
P2KKMSTIE Pemuda Sby
P2KKMIKIP Widya Darma Sby
P2KKMSTIE Widya Darma Sby
P2KKMSTIE ABI Surabaya
P2KKMUNUSA Surabaya
P2KKMUniv. Widya Kartika
P2KKMSTAI Al Akbar Surabaya

P2KKMUniv. Kahuripan Kediri

P2KKMSTAI Muhammadiyah Tulungagung

P2KKMSTIKI Malang
P2KKMSTIE INDOCAKTI
P2KKMSTIE Al Rifa'ie

P2KKMSTIA Bayuangga
P2KKMSTAI Muhammadiyah Probolinggo

P2KKMUniversitas Moch. Sroedji

P2KKMSTEI JOGJA - STEI Yogyakarta
P2KKMSTIE Mitra Indonesia
P2KKMSTiPsi
P2KKMSTAI Terpadu Yogyakarta
P2KKMUniversitas Mahakarya Asia

P2KKMSTIE Hidayatullah
P2KKMSTIE - GICI A
P2KKMSTIE - GICI A


P2KKMSTMIK-MJ - STMIK Muh. Jkt.
P2KKMUNKRIS - Krisnadwipayana
P2KKMSTT Bina Tunggal - Bekasi
P2KKMSTT Duta Bangsa - Bekasi
P2KKMSTIE - GICI C
P2KKMSTEBI Global Mulia
P2KKMUniversitas Pelita Bangsa
P2KKMUniversitas Indonesia Mandiri
P2KKMPoliteknik Bhakti Kartini

P2KKMSTMIK-STIKOM Bali
P2KKMPOLNAS Denpasar
P2KKMUniversitas Bali Dwipa
P2KKMPoltek Ganesha Guru Singaraja

P2KKMSTIE Ganesha
P2KKMSTT Yuppentek
P2KKMITB Ahmad Dahlan
P2KKMUniv. Tangerang Raya
P2KKMSTIA Maulana Yusuf
P2KKMSTIH Gunung Jati
P2KKMSTIE PPI Balaraja

P2KKMUNSUB - Universitas Subang

P2KKMSTIT Al-Hidayah Tasikmalaya

P2KKMSTIE Walisongo
P2KKMSTT Walisongo

P2KKMUniv. Islam Al-Ihya

P2KKMSTT Mandala, Bandung
P2KKMSTT Bandung
P2KKMSTIE Gema Widya Bangsa
P2KKMUniversitas Insan Cendekia Mandiri
P2KKMUniversitas Halim Sanusi
P2KKMUniversitas Persatuan Islam
P2KKMSTEBI Bina Essa

P2KKMSTT Dr. Khez Muttaqien

P2KKMIMWI Sukabumi

P2KKMSTIH Dharma Andigha
P2KKMUniversitas Teknologi Nusnatara

P2KKMSTT Muhammadiyah Cileungsi

P2KKMISTA - Institut ST Al Kamal
P2KKMSTIE IGI - Inter. Golden Inst.
P2KKM Univ. Mpu Tantular B

P2KKMU M J - Univ. Muh. Jkt

P2KKMFISIP UMJ - Univ. Muh. Jkt.
P2KKMFTan UMJ - Agroteknologi
P2KKMSTIE Trianandra Jakarta
P2KKMSTIE - GICI B
P2KKMSTIE Ganesha
P2KKMSTIMAIMMI Jakarta
P2KKMTanri Abeng University

P2KKMUMHT - Univ. MH. Thamrin
P2KKMFE UMHT - FE MH. Thamrin
P2KKMFASILKOM UMHT
P2KKMUNKRIS - Krisnadwipayana
P2KKMITBU - Inst. Tek. Budi Utomo
P2KKMSTIE Trianandra Jakarta
P2KKMSTMIK Muh. Jkt - Matraman
P2KKMSTMIK Muh. Jkt - Ciracas
P2KKMUniv. Mpu Tantular A
P2KKMSTT Sapta Taruna
P2KKMIAI Al-Ghurabaa Jakarta

P2KKMISIF - Institut Studi Islam Fahmina

P2KKMSTEBI Global Mulia

P2KKMSTIKes Sapta Bakti
P2KKMSTAI Miftahul ulum

P2KKMPoltekkes Kerta Cendekia

P2KKMPelita Raya Institute


KPT Konsultan Pendidikan Tinggi

Sampaikan ke Teman Anda
Nama Anda

Email Anda

Email Teman 1
❑ harus diisi dengan benar

Tautan Elok
silakan klik
Daftar Partai & Caleg (Arsip)
Perpustakaan Nasional Dunia
Kepustakaan Dunia

1. STIE GICI Business School Bogor - STIE GICI Business School Bogor - STIE GICI, Bogor : Jl. Pahlawan No.25A, RT.03/RW.11, Empang, Kec. Bogor Sel., Kota Bogor, Jawa Barat 16132
2. Universitas Nusa Mandiri Kramat - Universitas Nusa Mandiri Kramat - Kampus: Jl. Kramat Raya No.18, RT.5/RW.7, Kwitang, Kec. Senen, Kota Jakarta Pusat 10450
3. Universitas Nusa Mandiri Jatiwaringin - Universitas Nusa Mandiri Jatiwaringin - Kampus: Jl. Jatiwaringin No. 2, Cipinang Melayu, Jakarta Timur
stiebiitm.web.id  |  stiesahidbali.web.id  |  pljdepok.web.id  |  stieswadaya.web.id  |  stih-awanglong.web.id  |  mm-stieswadaya.web.id  |  ma-stieswadaya.web.id  |  magister-stieswadaya.web.id  |  s2-uwks.web.id

panjunan-sukodono-sidoarjo-wb-57704.br.web.id  ➩   ebenezer-odunlami.bs.web.id  ➩   danijel-aleksic-wb-6471.bsdmart.com  ➩   universitas-pgri-yogyakarta.bsdmart.web.id  ➩   jack-kelsey-wb-46977.bt.web.id
perkuliahan-s2-puputan-p2k-polnas-denpasar.singokarir.com  ➩   program-d3-bekasi-p2k-sttbinatunggal.singokerja.com  ➩   program-kelas-diploma-tiga-kepanjen-p2k-stiki-malang.singomart.com  ➩   program-kuliah-strata-satu-p2k-undaris.singomart.web.id  ➩   program-perkuliahan-strata-dua-jombang-p2k-indocakti.singomusic.info